【发布时间】:2018-02-25 06:54:06
【问题描述】:
在使用 pyKinect2 BodyGame 示例并进行了一些研究之后,我无法弄清楚如何通过使用该关节的 x 和 y 坐标来接收关节 z 值。
作者提到:
您需要使用从 body_joints_to_depth_space original post on github 获得的 x 和 y 从深度帧中获取 z
所以我在深度空间中获取关节的 x 和 y 坐标:
depth_points = self._kinect.body_joints_to_depth_space(joints)
x = depth_points[PyKinectV2.JointType_Head].x
y = depth_points[PyKinectV2.JointType_Head].y
joints 是一个指针数组(由于缺少库文档,我不知道它究竟是什么),它保存了使用的 kinect 包装器提供的骨架关节的数据。 但我仍然不知道如何获得 z 坐标。
函数调用
if self._kinect.has_new_depth_frame():
self._depth = self._kinect.get_last_depth_frame()
从设备获取最后一个深度帧。 self._depth 是一个深度值数组(不是矩阵),我尝试使用 x 和 y 索引相关的深度值。 (x = 水平位置,y = 垂直位置)
第一个选项是经典的矩阵索引调用:
z = self._depth[x,y]
但正如我之前提到的 self._depth 是一个数组。 所以我尝试了第二个选项,这意味着通过使用原始图像矩阵的宽度来索引线性数组。
z = self._depth[ y * self._frame_surface.get_width() + x ]
但我得到了一个索引超出范围的异常。
self._frame_surface.get_width() 是图像矩阵的宽度,如果我正确解释的话。 (正如我之前提到的,没有 pyKinectV2 库的文档)。
所以,问题仍然存在。 如何获取骨骼关节的z值?
【问题讨论】:
标签: python depth kinect-v2 pykinect