計算機視覺Open CV初學讀取視頻遇到的問題

OpenCV學習

hightgui

HightGui是一個可以移植的圖形工具包。
OpenCV將與操作系統,文件系統,攝像機之類的硬件進行交互的一些函數納入HighGui(high-level graphical user interface)庫中,有了HighGui,我們可以方便的打開窗口,顯示圖像,讀出或者寫入圖像相關的文件(包含圖像與視屏),處理簡單的鼠標,光標和鍵盤事件。也可以使用HighGui創建其他一些很有用的控件,如滑動條,並把它加入窗口。
----------——摘自細說HighGui

所以,每次頭文件一定要記得加上

#include "opencv2/highgui.hpp"

這個庫幫助我們只專注軟件編程,無需考慮與外界的攝像機硬件交互,所有的工作都打包到HighGui裏面完成了。

capture.get(type)

// Get video resolution
	int frameWidth = cap.get(cv::CAP_PROP_FRAME_WIDTH);
	int frameHeigth = cap.get(cv::CAP_PROP_FRAME_HEIGHT);

capture.get(type)通過get函數可以讀取視頻的相關參數,只需改變type。(cvGetCaptureProperty(capture,type)也可以實現)
type的類型爲:
CV_CAP_PROP_FRAME_WIDTH 視頻流幀的寬度
CV_CAP_PROP_FRAME_HEIGHT 視頻流幀的高.
CV_CAP_PROP_FPS 幀率.
CV_CAP_PROP_FRAME_COUNT 視頻文件的幀數.
CV_CAP_PROP_BRIGHTNESS 圖像亮度 (只對攝像頭).
CV_CAP_PROP_CONTRAST 圖像對比度 (only for cameras).
CV_CAP_PROP_SATURATION 圖像飽和度 (only for cameras).
更多參數和如何把視頻的相關參數顯示在窗口

編程中遇到的問題

bug 1

Q:qt creator 正常編譯但是執行時找不到執行文件
build 文件全部刪掉,重新cmake …(,頭大,重新來一回,竟然就好使。

bug 2

Q:下面這段話是什麼意思?

basic exited with code 0

意味着你的程序正常執行完畢並退出。

可以科普一下exit code,在大部分編程語言中都適用:

exit code 0 表示程序執行成功,正常退出

exit code 1 表示程序執行執行過程中遇到了某些問題或者錯誤,非正常退出

bug 3

Q:爲什麼,爲什麼,爲什麼打不開視頻源?玄之又玄,半個小時之前還是打不開的,半個小時之後竟然又能打開了

Videocapture 屬於videoio子模塊程序運行的時候會檢查是否爲空,如果爲空(可以用0代替)默認打開攝像頭,如果是路徑則默認打開視頻源。結尾必須使用release釋放所有資源。

VideoCapture cap;
        cap.open("/home/warmtree/下載/M1_ComputerVision/Lab2/video1.mp4");
        while (1)
        {
            Mat frame;//定義一個變量把視頻源一幀一幀顯示
            cap >> frame;
            if (frame.empty())
            {
                cout << "Finish" << endl;
                break;
            }
            imshow("Input video", frame);
            waitKey(30);
        }
        cap.release();
        return 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章