OpenCV學習筆記(一):使用opencv讀取攝像頭並實時顯示


 

初學OpenCV,淘寶80左右買了個480P的usb工業攝像頭,迫不及待地接上筆記本,

  ——嚯,比顯示屏上面自帶雪花的攝像頭好多了

 

再up2開發板上跑最簡單的OpenCV攝像頭捕獲例程,也是正常顯示。然而當再接上筆記本用visual studio跑的時候,自帶攝像頭正常,而usb攝像頭卻報錯

OpenCV Error: Assertion failed

 

查資料也查不出個所以然來(VS和OpenCV都是剛摸幾天- -)。

最初以為是usb攝像頭的device編號不匹配,去查獲取device編號的方法,網上的結果復雜至極令小白我毫無頭緒。

沒辦法一步一步來吧。然后發現問題似乎出在imshow()這一行。大概是攝像頭從打開到正常傳輸數據速度不夠快,最初imshow()都不到數據,就直接報錯了。偶然查到Mat::empty()可以判斷是否為空,於是把這個判斷加在imshow()之前,果然成功運行。

 

另外發現VideoCapture這一行,插入USB攝像頭后dev隨機分配,電腦重新啟動前都是按這個dev編號。在下次開機后可能就和這次編號又不同了,需要注意。

#include "stdafx.h"
#include <opencv2\opencv.hpp>  

using namespace cv;
using namespace std;

int main()
{
    Mat frame;
    //讀取視頻或攝像頭  
    VideoCapture capture(0);

    
    while (true)
    {
        
        capture >> frame;
        
        if(!frame.empty()){
            imshow("window",frame);
        }


        // imshow("讀取視頻", frame);

        if(waitKey(30) == 27)   //延時30  
        break;
} return 0; }

 

 

需要加入按鍵保存當前幀,可以插入以下代碼:

if (waitKey(30) == 'p') {
    sprintf(image_name, "..\\img\\%s%d%s", "image", ++num, ".jpg");
    imwrite(image_name, frame);
}

 


免責聲明!

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



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