2012-11-04 67 views
1

1)我得到這個錯誤,同時處理兩個羅技C310攝像頭與OpenCV的(更新Kubuntu的Linux)的OpenCV的多相機處理問題

VIDIOC_STREAMON:沒有足夠的空間在設備上留下

所有錯誤日誌如下

**IDIOC_QUERYMENU: Invalid argument 
VIDIOC_QUERYMENU: Invalid argument** 
VIDIOC_QUERYMENU: Invalid argument 
VIDIOC_QUERYMENU: Invalid argument 
VIDIOC_QUERYMENU: Invalid argument 
VIDIOC_QUERYMENU: Invalid argument 
VIDIOC_QUERYMENU: Invalid argument 
**libv4l2: error turning on stream: No space left on device** 
**VIDIOC_STREAMON: No space left on device** 
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /home/rjdp/Computer_Vision/0_Installers/OpenCV-2.4.2/modules/core/src/array.cpp, line 2482 
terminate called after throwing an instance of 'cv::Exception' 
    what(): /home/rjdp/Computer_Vision/0_Installers/OpenCV-2.4.2/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat 

2)它只在處理兩個攝像頭時發生,即使在默認的低分辨率640x480。我仍然試圖將代碼中的分辨率降低到320x240,這也沒有奏效。

3)我在其他網站上搜索了很多其他帖子&。這告訴我沒有足夠的USB凸輪帶寬可用。於是,我就在背面也未能:(

我的問題是堵塞一個凸輪在前置USB &之一:

是否可以解決帶寬/內存&運行這個問題上有兩個或 更多個相機一起上的OpenCV 2.4.2 ??的OpenCV使用FFMPEG來處理I/O,以便我可以告訴我的相機硬件與一些FFMPEG命令取輸入流與壓縮MPEG模式代替帶寬的消耗正常模式。

代碼是如下:

#include "opencv2/opencv.hpp" 
#include <stdio.h> 
using namespace cv; 

int main(int, char**) 
{ 
    VideoCapture cap01(0); // open the default camera 
    cap01.set(CV_CAP_PROP_FRAME_WIDTH,320); 
    cap01.set(CV_CAP_PROP_FRAME_HEIGHT,240); 
    //sleep(1); 
    if(!cap01.isOpened()) // check if we succeeded 
     return -1; 
    namedWindow("Camera01",1); 

    VideoCapture cap02(1); // open the default camera 
    cap02.set(CV_CAP_PROP_FRAME_WIDTH,320); 
    cap02.set(CV_CAP_PROP_FRAME_HEIGHT,240); 
    if(!cap02.isOpened()) // check if we succeeded 
     return -1; 
    namedWindow("Camera02",1); 

    for(;;) 
    { 
     Mat frame, frame_1; 
     //Mat frame02; 
     cap02 >> frame; 
     imshow("Camera01", frame); 
     if(waitKey(30) >= 0) break; 
     Mat frame_1; 
     cap02 >> frame_1; 
     imshow("Camera02", frame_1); 
     if(waitKey(30) >= 0) break; 
    } 

    return 0; 
} 

回答

0

使用PCI USB擴展卡解決同樣的問題,對我來說,因爲一個網絡攝像頭accupies USB總線上的所有可用帶寬。使用pci usb擴展卡爲您提供第二個USB總線,您可以連接第二個網絡攝像頭

+0

是否有任何解決方案來降低連接到單個USB總線的所有網絡攝像頭的帶寬?(通過降低分辨率?)我想知道如何去做。我考慮過bcz,我在許多低分辨率商店看到安全攝像頭。 – Rajdeep

+0

PCI卡解決方案運行良好:D:D – Rajdeep