我正在尝试使用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方法,我可以调用。帮助赞赏。
答案 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)