当我的相机连接到USB 2.0端口时,为什么以下代码可以工作,但是当相机连接到USB 3.0端口时,我会遇到"无相机"错误?我正在Ubuntu上运行OpenCV 2.4 12.04 LTE 32位。我也看到了其他摄像头和驱动程序的问题,所以我怀疑这可能是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 cameran");
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:实际上,此代码在重新启动后起作用一次。之后,摄像机不再出现在/开发中,也不再出现在LSUSB的输出中。在上述程序的一项运行后,该卡上工作的USB 3.0端口。
问题似乎取决于计算机,或者更具体地说是USB卡。我现在在另外两台计算机上尝试了此操作,并且可以正常工作。
所以一个解决方案:尝试其他计算机。