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;