您好我明白,根据Microsoft的官方文档,获得的相机空间点已经以米为单位表示。但是,我仍然不确定这些值是否以米为单位,因为值的变化是9位数或更多,有时是正数和负数。
有人可以向我解释这些值是什么,它们是否已经以米为单位?
Function to process body (placed the output of the joint[j].position in it
如果您需要其他信息,请与我们联系。我很抱歉,因为我是kinect的新手。顺便说一句,这是kinect v2!
答案 0 :(得分:1)
每个联合都有一个Position
属性,即CameraSpecePoint
。 CameraSpacePoint对象有三个属性X
,Y
和Z
,它们是float32
并以米表示。
相机空间是指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);