OpenCV无法在Linux上从8个以上的网络摄像头进行捕获



OpenCV无法在Linux上打开超过8个网络摄像头的VideoCaptures。这里有一个简单的例子:

# "opencap.py"
import cv2, sys
dev = int(sys.argv[1])
cap = cv2.VideoCapture(dev)
print "device %d: %s" %(dev, "success" if cap.isOpened() else "failure")

对于我的设置(OpenCV 2.4.11,Ubuntu 14.04),比如说,有9个网络摄像头,opencap.py成功地完成了前8个网络摄像头(0-7),但最后一个我得到了

> python opencap.py 8
HIGHGUI ERROR: V4L: index 8 is not correct!
device 8: failure

注意:v4l2-ctl --list-devices正确列出了9个网络摄像头(/dev/video0,…,/dev/video8)。

问题是由OpenCV源代码中的这一行引起的:

#define MAX_CAMERAS 8

只需更改MAX_CAMERAS值并重新构建OpenCV即可解决问题。要更改的文件是modules/higgui/src/cap_libv4l.cpp(第260行),用于libv4l构建,而cap_v4l.cpp用于v4l构建。(例如,有关两个构建选项的更多信息,请参阅此答案。)对于OpenCV 3.0,目录更改为modules/videio/src/。

注意:通常在达到8个摄像头的限制之前,网络摄像头会遇到USB带宽问题。例如,请参见此答案。

相关内容

  • 没有找到相关文章

最新更新