我正在尝试在 Ubuntu 11.10 上使用 OpenCV 2.1 同时流式传输来自 3 个 Logitech Webcam Pro 900 设备的图像。为这些加载了 uvcvideo 驱动程序。
捕获两个设备工作正常,但是三个我遇到第三个空间不足错误:
libv4l2: error turning on stream: No space left on device
我似乎遇到了这个问题: http ://renoirsrants.blogspot.com.au/2011/07/multiple-webcams-on-zoneminder.html我试图做 quirks=128 (或几乎任何其他二次幂)技巧,但无济于事。我还尝试在另一台带有两个 USB 2.0 集线器的机器上将两个摄像头连接到一个,将第三个摄像头连接到第二个,这导致了同样的问题。我大致如下初始化(使用 N 个摄像头,因此结果实际上被放入 STL 向量中):
cv::VideoCapture cap0(0); //(0,1,2..)
并尝试将所有摄像机循环捕获为
cap0.retrieve(frame0);
这适用于 N=2 相机。当我设置 N=3 时,第三个窗口打开但没有图像出现,并且控制台充满了 V4L2 错误。同样,当我设置 N=2 并尝试在说 Cheese(简单的网络摄像头捕获应用程序)中打开第三个摄像头时,这也不起作用。
现在来了个大问题:通过启动三个实例尝试 guvcview 后,我能够一次查看三个摄像头(在帧速率或相关方面没有问题),所以这似乎不是硬件问题。我认为我应该设置一些属性,但我不确定那是什么。我已经研究了 MJPEG(这些相机似乎支持),但没有成功设置这个属性,或者如果我从 OpenCV 启动它们,它们在哪种模式下运行(yuyv?)。
想法?