我正在使用 Kinect 在 Open GL (C++) 中制作应用程序。
我想得到头部(骨架)的坐标。
我看到了这个功能:
void CSkeletalViewerApp::Nui_DrawSkeletonSegment( NUI_SKELETON_DATA * pSkel, int numJoints, ... )
,
但我不知道如何使用它并提取头部的坐标。
我正在使用 Kinect 在 Open GL (C++) 中制作应用程序。
我想得到头部(骨架)的坐标。
我看到了这个功能:
void CSkeletalViewerApp::Nui_DrawSkeletonSegment( NUI_SKELETON_DATA * pSkel, int numJoints, ... )
,
但我不知道如何使用它并提取头部的坐标。
从您发布的代码片段来看,我们可以假设您使用的是 Microsoft 的 Kinect for Windows SDK。
关节的坐标存储在NUI_SKELETON_DATA
结构的 SkeletonPositions 成员中。该结构的实例可以在结构的 SkeletonData 成员中找到,NUI_SKELETON_FRAME
只要骨架跟踪引擎完成跟踪,就会提供该成员。
当然,这只有在传感器正确初始化的情况下才有效。请查看 SDK 附带的示例项目,并阅读 Microsoft 的在线文档。
此外,请注意 Kinect 的坐标系以传感器为原点,提供的坐标值范围大致为 x 轴 -2.2 到 2.2,y 轴 -1.6 到 1.6,以及 0.0 到 4.0 z 轴(深度)。因此,您可能需要应用一些转换。