opencv 打不开uvc camera的MJPEG格式的数据流的问题

opencv 打不开uvc camera的MJPEG格式的数据流的问题

    • opencv打开电脑系统相机没问题
    • opencv打开uvc摄像头的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来获取数据流。

QCamera打开uvc camera,获取mjpeg数据流链接描述

你可能感兴趣的:(QT知识点)