使用openCV打開USB攝像頭(UVC 小米micro接口)


之前在AndroidStudio上就用了別人用寫的庫成功地打開了USB攝像頭。

 

於是我之后又在PC上嘗試了一下,首先去淘寶買了個MICRO母轉USB公的轉接口,然后在Qt上配置了一下OPENCV后開始嘗試。

然后就坑到了,遂寫此文。

 

本人使用了2種openCV提供的方法:

    VideoCapture capture;
    capture.open(3);           //open the default camera -1才是默認攝像機,3是我的USBCaemra的
    if (capture.isOpened())
    {

        qDebug()<<"camera open!!!";
    }
    Mat edges;
    namedWindow("edges",1);
    for(;;)
    {
        Mat frame; //定義一個Mat變量,用於存儲每一幀的圖像
        capture>>frame; //讀取當前幀
        if (!frame.empty()) //判斷當前幀是否捕捉成功 **這步很重要
        {
            imshow("edges", frame); //若當前幀捕捉成功,顯示
        }
        else
        {
            qDebug()<<"can not ";
        }
        waitKey(30); //延時30毫秒

    }
  IplImage* pFrame = NULL;
           //聲明IplImage指針

           CvCapture* pCapture = cvCreateCameraCapture(-1);
           //獲取攝像頭
           //-1為默認攝像頭,其他則需要填寫地址;
           //函數cvCreateCameraCapture給從攝像頭的視頻流分配和初始化CvCapture結構。
           //目前在Windows下可使用兩種接口:Video for Windows(VFW)
           //和Matrox Imaging Library(MIL);
           //Linux下也有兩種接口:V4L和FireWire(IEEE1394)。
           //釋放這個結構,使用函數cvReleaseCapture。
           //返回值為一個
           // CvCapture


           cvNamedWindow("video", 1);
           //創建窗口


           while(1)//顯示視屏
           {
               pFrame=cvQueryFrame( pCapture );
               // 函數cvQueryFrame從攝像頭或者文件中抓取一幀,
               //然后解壓並返回這一幀。
               //這個函數僅僅是函數cvGrabFrame和函數cvRetrieveFrame在一起調用的組合。
               //返回的圖像不可以被用戶釋放或者修改。抓取后,capture被指向下一幀,
               //可用cvSetCaptureProperty調整capture到合適的幀。

               if(!pFrame)break;
               //如果PFrame為空,則跳出循環;

               cvShowImage("video",pFrame);
               //當前幀顯示后

               char c=cvWaitKey(33);
               //我等待33ms

               if(c==27)break;
               //如果用戶觸發了按鍵,將按鍵的ASCII值給C
               //如果C為ESC(ASCII 為27)循環退出
           }
           cvReleaseCapture(&pCapture);
           //釋放Capture;

           cvDestroyWindow("video");
           //銷毀窗口

 

以上兩種方法在填入-1時,都會彈出選擇攝像機的界面,而且都可以成功打開筆記本電腦上自帶的攝像頭。

但是本人手頭上USBCamera卻不行。之后發現只有使用VideoCapture方法,填入指定id才能成功過打開攝像頭。 CvCapture怎么試都不行。所以希望大家在開發的時候注意到這一點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM