0

我正在制作 3d 图形编辑器,它将用于Kinect屏幕导航。
我需要制作自己的光标,它将通过 Kinect 从右手获取轴 x 和轴 y 坐标,将其翻译到计算机屏幕并将光标移动到该位置。

我真正的问题是,我还需要来自深度传感器的坐标才能获得 z 轴上的坐标。任何帮助将不胜感激。应用程序是C#用官方开发的MS Kinect SDK

4

1 回答 1

2

例如,如果右手将移动光标,您可以获得右手的坐标,将其转换为颜色坐标并将鼠标放在所需的坐标处。

首先,声明你的骨架数组和坐标映射器实例私有 Skeleton[] 骨架;私人 CoordinateMapper cm = new CoordinateMapper();

在 AllFramesReady 或 SkeletonFrameready 事件句柄中,您可以执行以下操作:

using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
 if (skeletonFrame == null)
     return;

    if (skeletons == null || skeletons.Length != skeletonFrame.SkeletonArrayLength)
    {
        skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
    }
    skeletonFrame.CopySkeletonDataTo(skeletons);

    if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked))
        return;

    Skeleton firstTrackedSkeleton = skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked).FirstOrDefault();

    CoordinateMapper cm = new CoordinateMapper(YourKinectSensor);
    ColorImagePoint colorPoint = cm.MapSkeletonPointToColorPoint(first.Joints[JointType.HandRight].Position, ColorImageFormat.RgbResolution640x480Fps30);

     //Here the variable colorPoint have the X and Y values that you need to position your cursor.
}

这是基础知识,对于更详细的示例,我建议您查看 sdk 附带的示例。

于 2012-12-02T19:35:07.087 回答