OpenNI返回坐标范围

时间:2012-06-29 02:48:01

标签: coordinates coordinate-systems openni

我正在使用HandsNne的HandsGenerator类,我想用它来跟踪用户的动作。

我已经注册了自己的回调以获取手的更新位置,一切正常,但我无法找到有关返回的XnPoint3D的坐标系等的信息。是否存在精确指定X,Y,Z范围以及可能缩放信息的某个规范(以便我知道在XnPoint3D的{​​{1}}中更改为100对应于一个运动10厘米,或其他东西)。

1 个答案:

答案 0 :(得分:2)

HandsGenerator从传感器返回以毫米为单位的真实世界坐标。这意味着深度图正中间的深度点的X和Y为0。

100(X,Y或Z)的变化确实是10厘米(100毫米= 10厘米)的变化。

X和Y值的范围取决于手点的Z值。假设您在深度图的左上角有一个手点(或者在投影坐标中为0,0),可能的X和Y值取决于手的距离。手越近,X和Y越小。要获得最大范围你的手位置,你应该选择一个任意的最大Z值,然后找到X&该距离处深度图角的Y值。或者换句话说 - 将投影坐标(0,0,maxZ)和(DepthmapWidth,DepthmapHeight,maxZ)转换为真实世界坐标。 Z值小于maxZ的所有手点将落在这2个真实世界坐标之间

请注意,您可以使用DepthGenerator :: ConvertProjectiveToRealWorld将投影坐标转换​​为现实世界。