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

时间:2016-07-27 17:41:13

标签: python linux opencv limit webcam

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)。

1 个答案:

答案 0 :(得分:6)

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

#define MAX_CAMERAS 8

只需更改MAX_CAMERAS值并重建OpenCV即可解决问题。要更改的文件是用于libv4l构建的modules / highgui / src / cap_libv4l.cpp(line 260)和用于v4l构建的cap_v4l.cpp。 (有关两个构建选项的更多信息,请参阅此answer。)对于OpenCV 3.0,目录更改为modules / videoio / src /.

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