VideoCapture因USB 3.0端口的摄像头而失败

时间:2014-03-14 15:42:15

标签: opencv usb ubuntu-12.04

为什么以下代码在我的相机连接到USB 2.0端口时有效,但当相机连接到USB 3.0端口时,我得到了#34;无相机"错误?我在Ubuntu 12.04 LTE 32位上运行OpenCV 2.4。我也在other cameras and drivers看到了这个问题,所以我怀疑它可能是Linux的问题

#include <stdio.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"

using namespace cv;

int main(){

    Mat img;
    int imgw = 640;
    int imgh = 480;

    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened()){ // check if we succeeded
        printf("No camera\n");
        return -1;
    }
    cap.set(CV_CAP_PROP_FRAME_WIDTH,  imgw);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, imgh);

    namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );

    for( ; ; ){

        cap.read( img );

        imshow( "Display Image", img );

        if( waitKey( 5 ) == 27 ) break;

    }

    return 0;

};

编辑: 还通过连接到USB 3.0端口的USB 2.0集线器引发错误。

编辑2: 实际上,此代码在重新启动后可以运行一次。之后,相机不再显示在/ dev中,也不会显示在lsusb的输出中。一次运行上述程序后,该卡上的USB 3.0端口无效。

1 个答案:

答案 0 :(得分:0)

问题似乎取决于计算机,或者更具体地说,取决于USB卡。我现在已经在其他两台计算机上尝试过这种方法,但它运行正常。

所以一个解决方案:尝试不同的计算机。