我正在使用Kinect for Windows SDK(v1.8) 我成功地从Kinect读取动作,但我现在想知道如何获得我正在跟踪的关节的绝对位置(右手)
我正在使用以下函数NuiTransformSkeletonToDepthImage,但x和y坐标的值范围为100-200。
有关如何将返回的坐标转换为屏幕坐标的任何建议? 有一种感觉我错过了一些非常明显的东西......
提前谢谢
答案 0 :(得分:0)
好的,经过相当多的环顾和反复试验;我找到了解决方案。
当你调用NuiTransformSkeletonToDepthImage()时;您可以使用NUI_IMAGE_RESOLUTION枚举指定Kinect分辨率。我相信价值观是; 80x60,320x240,640x480,1280x960
取决于您决定使用的分辨率;你需要用相应的分辨率来划分返回的x和y坐标。然后将它们乘以窗口大小,你应该在窗口中有坐标。
我相信您还可以在创建Kinect传感器接口实例时指定分辨率。
示例,因为我的解释不太简洁:
float x, y
const Vector4 fromPos = skeleton.SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT];
NuiTransformSkeletonToDepthImage(fromPos, &x, &y, NUI_IMAGE_RESOLUTION_320x240);
x = x * ((float)WINDOW_WIDTH / 320.0f);
y = y * ((float)WINDOW_HEIGHT / 240.0f);
有任何问题;随便问。