我正在制作3D图形编辑器,它将使用Kinect
来屏幕导航
我需要制作自己的光标,通过Kinect从右手获取轴x和轴y坐标,将其转换为计算机屏幕并将光标移动到该位置。
我真正的问题是,我还需要深度传感器的坐标来获取z轴上的坐标。任何帮助将不胜感激。应用程序是在C#
中使用官方MS Kinect SDK
开发的。
答案 0 :(得分:2)
如果右手移动光标,您可以获得右手坐标,将其转换为色坐标,然后将鼠标放在所需的坐标上。
首先,声明骨架数组和坐标映射器实例 私人骷髅[]骷髅; private 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附带的样本。