一段基于OpenCV2的代碼。
作用是從攝像頭獲取幀并將幀寫入指定的視頻文件中。
需要注意的是,視頻文件所在的路徑需要存在,例如D:/images/1.avi。images這個目錄需要存在。調用VideoWrite類對象的成員函數open時,編解碼方式參數設置為-1,代碼運行時會彈出對話框,手動選擇編解碼方式。
#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/core/core.hpp>int main(){ //打開攝像頭 cv::VideoCapture captrue(0); //視頻寫入對象 cv::VideoWriter write; //寫入視頻文件名 std::string outFlie = "D:/1.avi"; //獲得幀的寬高 int w = static_cast<int>(captrue.get(CV_CAP_PROP_FRAME_WIDTH)); int h = static_cast<int>(captrue.get(CV_CAP_PROP_FRAME_HEIGHT)); cv::Size S(w, h); //獲得幀率 double r = captrue.get(CV_CAP_PROP_FPS); //打開視頻文件,準備寫入 write.open(outFlie, -1, r, S, true); //打開失敗 if (!captrue.isOpened()) { return 1; } bool stop = false; cv::Mat frame; //循環 while (!stop) { //讀取幀 if (!captrue.read(frame)) break; cv::imshow("Video", frame); //寫入文件 write.write(frame); if (cv::waitKey(10) > 0) { stop = true; } } //釋放對象 captrue.release(); write.release();}
以上這篇OpenCV2從攝像頭獲取幀并寫入視頻文件的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答