如何使用libfreenect Python绑定获取以厘米为单位的Kinect深度图像数据?
我正在尝试使用libfreenect的Python接口获取Xbox Kinect的深度图像,想要的单位是厘米或英寸,反正不太在乎。
为此,我想把Kinect的默认深度模式设置为注册模式(在C语言接口中叫FREENECT_DEPTH_REGISTERD;在Python接口中叫DEPTH_REGISTERED,根据freenect.pyx的说法),我用的是:
freenect.set_depth_mode(freenect.DEPTH_REGISTERED)
但是这个调用失败了,出现了一个错误:
TypeError: set_video_mode() takes exactly 3 positional arguments (1 given)
我查看了freenect.c文件,发现了另外两个参数,但这又让我陷入了另一个复杂的问题。我不太确定该怎么做。我希望能有一个简单的Python方法可以调用。非常感谢大家的帮助。
1 个回答
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)