2014-12-05 81 views
0

我有兩個不同的相機。我使用下面的簡單代碼,我得到一個錯誤。在這個網站上有類似的問題,但沒有一個被接受的答案。該錯誤消息是:libv4l2錯誤:設備上沒有剩餘空間

libv4l2: error turning on stream: No space left on device 
VIDIOC_STREAMON: No space left on device 
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file 
/home/OpenCV/opencv-2.4.10/modules/highgui/src/window.cpp, line 269 

代碼:根據我對web.I搜索沒有爲這個測試

VideoCapture cap(2); 
VideoCapture cap2(1); 

if(!cap.isOpened()) // check if we succeeded 
{ 
    cout << "Webcam cannot open!\n" ; 
    return -1; 
} 
if(!cap2.isOpened()) // check if we succeeded 
{ 
    cout << "Webcam2 cannot open!\n" ; 
    return -1; 
} 
namedWindow("Window1", CV_WINDOW_AUTOSIZE); 
namedWindow("Window2", CV_WINDOW_AUTOSIZE); 
for(;;) 
{ 
    iKey = waitKey(5); 
    if (iKey == ESC) { break; } 
    cap >> frame; 
    cap2 >> frame2; 

    imshow("Window1", frame); 
    imshow("Window2", frame2); 
} 

EDIT 1 這些相機中使用相同的輪轂和輸出如下。我不明白我應該如何解決這個問題。

sudo cat /sys/kernel/debug/usb/devices | grep "B: " 

B: Alloc= 0/900 us (0%), #Int= 0, #Iso= 0 
B: Alloc= 37/900 us (4%), #Int= 2, #Iso= 0 
B: Alloc= 0/900 us (0%), #Int= 0, #Iso= 0 
B: Alloc= 0/900 us (0%), #Int= 0, #Iso= 0 
B: Alloc= 0/900 us (0%), #Int= 0, #Iso= 0 
B: Alloc= 0/900 us (0%), #Int= 0, #Iso= 0 
B: Alloc= 0/800 us (0%), #Int= 0, #Iso= 0 
B: Alloc= 0/800 us (0%), #Int= 0, #Iso= 0 

回答

0

如果你得到低分辨率的幀,問題就解決了。低碼對我來說已經足夠了。

VideoCapture cap1 = VideoCapture(1); 
VideoCapture cap2 = VideoCapture(2); 

cap1.set(CV_CAP_PROP_FRAME_WIDTH, 300); 
cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 300); 
cap2.set(CV_CAP_PROP_FRAME_WIDTH, 300); 
cap2.set(CV_CAP_PROP_FRAME_HEIGHT, 300); 
1

我在兩個相鄰的兩個USB端口上使用兩個深度感應攝像頭(USB)也遇到了同樣的問題。他們在內部使用了相同的USB總線,太多了,所以我切換到我的USB 3.0端口(這是另一個總線),現在它的工作。

+0

我沒有USB 3.0端口:) – zumma 2015-09-21 12:45:45

相關問題