c++ 版本 opencv 讀取視頻

突然想起看視頻怎麼讀寫的問題,就搜了一下,結果都是以前老的c版本。c++版本更強大,也更精簡,
所以從官網找了個例子,希望能夠讓中文版本的我們看到,並能夠體會到c++版本的一些便利與不同之處。

#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // 打開默認攝像頭,如果不是默認,可以改寫括號裏面那個0爲1,2,...
    if(!cap.isOpened())  // 檢查是否已經成功打開,如果沒有則直接退出程序
        return -1;

    Mat edges;           //c++版本已經都使用Mat結果存儲圖像,需要做適當瞭解才行
    namedWindow("edges",1); //直接創建窗口,名字爲edges
    for(;;)                 //相當於while(1)
    {
        Mat frame;          //臨時圖像
        cap >> frame; // 這麼一個符號,已經把圖像從攝像機的存儲區複製到了frame裏面
        cvtColor(frame, edges, CV_BGR2GRAY); //把彩色圖像轉換成灰度圖像,結果放到了edges裏面
        GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); //把edges裏面的圖像做高斯模糊,後面那兩個是參數
        Canny(edges, edges, 0, 30, 3); //canny 算子
        imshow("edges", edges); //顯示圖像
        if(waitKey(30) >= 0) break; // 這裏是主要的問題,等待30ms,然後進行下一個循環。這裏僅僅是顯示,沒有涉及到很精確的時間問題。
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章