opencv 打不开uvc camera的MJPEG格式的数据流的问题
最近在拿到外接uvc摄像头的数据时,遇到了问题,特地记录下。
opencv打开电脑系统相机没问题
cv::VideoCapture mCapture(0); //0是电脑集成的camera ID
if(!mCapture.isOpened()){
qDebug()<<"open camera error!";
return;
}
while(true){
cv::Mat frame;
mCapture>>frame; //默认的分辨率是640x480
if(!frame.empty()){
cv::imshow("stream",frame);
}
if(cv::waitKey(30)>0){
break;
}
}
opencv打开uvc摄像头的mjpeg格式的数据流一直报错
int id=1;
cv::VideoCapture mCapture(id+cv::CAP_DSHOW); //1是uvc camera ID,cv::CAP_DSHOW是能直接获取
if(!mCapture.isOpened()){
qDebug()<<"open camera error!";
return;
}
mCapture.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','J','P','G')); //1.设置视频格式是mjpeg
mCapture.set(CV_CAP_PROP_FPS,30); //2.设置帧率30
mCapture.set(CV_CAP_PROP_FRAME_WIDTH,640); //3.设置分辨率
mCapture.set(CV_CAP_PROP_FRAME_HEIGHT,360);
while(true){
cv::Mat frame;
mCapture>>frame;
if(!frame.empty()){
cv::imshow("stream",frame);
}
if(cv::waitKey(30)>0){ //每帧显示30ms
break;
}
}
因为uvc camera是外界摄像头,这种方式并不能拿到数据流,一直报错。最终放弃了用opencv的方式,转用系统自带的QCamera来获取数据流。