我在xubuntu 16.04中使用了2个摄像头(Orbec Astra Mini)和python3、opencv3.2和openNi2。在
我可以读取1个摄像头,并可以选择哪个摄像头读取(更改设备[0])dev = openni2.Device.open_all()
depth_stream = dev[0].create_depth_stream()
depth_stream.start()
depth_stream.set_video_mode(c_api.OniVideoMode(pixelFormat = c_api.OniPixelFormat.ONI_PIXEL_FORMAT_DEPTH_100_UM, resolutionX = 320, resolutionY = 240, fps = 30))
问题是,如果我启动另一个进程读取另一个摄像头,它会崩溃并显示:
^{pr2}$
我试着把摄像机插在同一辆车和另一辆车上。现在它们一个插入usb3.0,另一个插入usb2.0。在
如果在单个进程中调用它们,它们都可以工作,当我启动第二个进程(相同的代码使用不同的设备索引)时,第二个进程不起作用。在
使用解决方案编辑:
我解决了在openni2.py中创建新函数的问题:@classmethod
def open_any_available(cls, id):
z= 0
for cam in cls.enumerate_uris():
if z== id:
try:
return cls(cam)
except OpenNIError:
pass
z+=1
raise Exception("no available cams")