为什么以下代码在我的相机连接到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端口无效。
答案 0 :(得分:0)
问题似乎取决于计算机,或者更具体地说,取决于USB卡。我现在已经在其他两台计算机上尝试过这种方法,但它运行正常。
所以一个解决方案:尝试不同的计算机。