OpenCV讀寫影片操作
- 2022 年 9 月 13 日
- 筆記
- Application, C/C++, OpenCV
一、讀取影片流
在使用OpenCV讀取攝影機,或者處理一些磁碟中保存的影片文件時,通常使用VideoCapture
進行讀取。
std::string video_path("/path/to/the/video");
cv::VideoCapture VCap( video_path );
if( !VCap.isOpened() )
{
CV_Error_(cv::Error::StsBadArg, ("Error opening video: %s", video_path.c_str()));
}
二、寫入影片流
而對於處理後的結果,想要編碼並保存到磁碟時,通常使用VideoWriter
來操作。
int frame_fps = 24;
int Wd = 1920;
int Hd = 1080;
std::string video_out_name("/path/to/save/the/video");
cv::VideoWriter VOut;
VOut.open( video_out_name, cv::VideoWriter::fourcc('X','V','I','D'),
frame_fps, cv::Size(Wd, Hd) );
if( !VOut.isOpened() )
{
CV_Error_(cv::Error::StsBadArg, ("Error opening video: %s", video_out_name.c_str()));
}
cv::Mat res;
//...
VOut << res;
//...
VOut.release(); //在處理完成後用release釋放資源
三、寫入影片時的編碼格式
OpenCV VideoWriter
一些常見的編碼格式以及對應的CV_FOURCC
的寫法:
cv::VideoWriter::fourcc('P', 'I', 'M', '1') - MPEG-1
cv::VideoWriter::fourcc('M', 'J', 'P', 'G') - motion-jpeg
cv::VideoWriter::fourcc('M', 'P', '4', '2') - MPEG-4.2
cv::VideoWriter::fourcc('D', 'I', 'V', '3') - MPEG-4.3
cv::VideoWriter::fourcc('D', 'I', 'V', 'X') - MPEG-4
cv::VideoWriter::fourcc('U', '2', '6', '3') - H263
cv::VideoWriter::fourcc('I', '2', '6', '3') - H263I
cv::VideoWriter::fourcc('F', 'L', 'V', '1') - FLV1
cv::VideoWriter::fourcc('A', 'V', 'C', '1') - H264
cv::VideoWriter::fourcc('I', '4', '2', '0') - YUV
參考資料
[1] OpenCV – cv::VideoWriter::fourcc可支援的影片編碼格式 //www.stubbornhuang.com/2118/
本文作者 :phillee
發表日期 :2022年09月13日
本文鏈接 ://i.cnblogs.com/posts/edit;postId=16688729
版權聲明 :自由轉載-非商用-非衍生-保持署名(創意共享3.0許可協議/CC BY-NC-SA 3.0)。轉載請註明出處!
限於本人水平,如果文章和程式碼有表述不當之處,還請不吝賜教。