我正在使用HandsNne的HandsGenerator类,我想用它来跟踪用户的动作。
我已经注册了自己的回调以获取手的更新位置,一切正常,但我无法找到有关返回的XnPoint3D
的坐标系等的信息。是否存在精确指定X,Y,Z范围以及可能缩放信息的某个规范(以便我知道在XnPoint3D
的{{1}}中更改为100对应于一个运动10厘米,或其他东西)。
答案 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将投影坐标转换为现实世界。