如何使用libfreenect python绑定以厘米为单位获取kinect深度图像数据?

时间:2014-05-28 00:45:03

标签: python kinect depth units-of-measurement

我正在尝试使用libfreenect Python绑定以一些合理的单位(厘米或不太关心)获取xbox kinect深度图像。

为此,我试图将默认的kinect深度模式设置为已注册(C API中的FREENECT_DEPTH_REGISTERD;根据freenect.pyx的Python中的DEPTH_REGISTERED):

freenect.set_depth_mode(freenect.DEPTH_REGISTERED)

但是调用失败并出现错误:

TypeError: set_video_mode() takes exactly 3 positional arguments (1 given)

在看了freenect.c之后,我发现了另外两个论点,但这导致了另一个兔子洞。不知道该怎么办。我希望有一个很好的python方法,我可以调用。帮助赞赏。

1 个答案:

答案 0 :(得分:2)

freenect.set_depth_mode采用的另外两个参数是设备和分辨率。所以你必须为这个功能提供一个设备。对于分辨率,您可以使用freenect.RESOLUTION_MEDIUM,它是默认值。

一个工作的例子是:

mdev = freenect.open_device(freenect.init(), 0)
freenect.set_depth_mode(mdev, freenect.RESOLUTION_MEDIUM, freenect.DEPTH_REGISTERED)
freenect.runloop(dev=mdev)