Kinect:获取以米为单位的关节坐标(x,y)

时间:2016-03-06 13:08:18

标签: c++ visual-c++ kinect kinect-sdk

您好我明白,根据Microsoft的官方文档,获得的相机空间点已经以米为单位表示。但是,我仍然不确定这些值是否以米为单位,因为值的变化是9位数或更多,有时是正数和负数。

有人可以向我解释这些值是什么,它们是否已经以米为单位?

Function to process body (placed the output of the joint[j].position in it

enter image description here

Results

enter image description here

如果您需要其他信息,请与我们联系。我很抱歉,因为我是kinect的新手。顺便说一句,这是kinect v2!

1 个答案:

答案 0 :(得分:1)

每个联合都有一个Position属性,即CameraSpecePoint。 CameraSpacePoint对象有三个属性XYZ,它们是float32并以表示。

正如documentation

中所述
  

相机空间是指Kinect使用的3D坐标系。坐标系定义如下:

     
      
  • 原点(x = 0,y = 0,z = 0)位于Kinect上红外传感器的中心
  •   
  • X长到传感器左侧
  •   
  • Y长大(请注意,此方向基于传感器的倾斜度)
  •   
  • Z向传感器朝向的方向伸展   1个单位= 1米
  •   

另请注意,您已使用sprintf方法中的%d来打印浮点值,而%d应仅用于带符号的十进制整数(请参阅{{ 3}})。如果要打印X,Y和Z值,则必须使用%f;所以你的sprintf应该是这样的:

sprint(abc, "Head is at %f on X-axis\n", joints[j].Position.X);