小編給大家分享一下OpenCV2從攝像頭獲取幀并寫入視頻文件的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
一段基于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從攝像頭獲取幀并寫入視頻文件的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。