2016-07-27 42 views
2

OpenCV無法在Linux上爲8個以上網絡攝像機打開VideoCaptures。這裏一個簡單的例子:OpenCV無法從Linux上的8個以上網絡攝像機捕獲

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

+0

我認爲GPU無法處理8個攝像頭,特別是在網絡攝像頭具有高分辨率的情況下。 – Tes3awy

+0

我的應用程序是_Drosophila_的實時跟蹤。當跟蹤8個攝像頭時,跟蹤器僅使用_CPU_,僅使用i7-4930K的12%,每個攝像頭的像素數爲320x240像素和7.5 fps。 –

+0

然後我錯了。我會想到其他的東西 – Tes3awy

回答

4

問題是由這一行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