C++ 中如何使用VideoWriter寫入視頻,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了西峰免費(fèi)建站歡迎大家使用!
VideoWriter
類的創(chuàng)建
VideoWriter的對象的創(chuàng)建有兩種方式:
第一種是使用構(gòu)造函數(shù)的形式:
cv::VideoWriter out(
const string& filename, // 輸入文件名
int fourcc, // 編碼形式,使用 CV_FOURCC()宏
double fps, // 輸出視頻幀率
cv::Size frame_size, // 單幀圖片的大小
bool is_color = true // 如果是false,可傳入灰度圖像
);
第二種使用open()的方式:
cv::VideoWriter out;
out.open(
"my_video.mpg", //輸出文件名
CV_FOURCC('D','I','V','X'), // MPEG-4 編碼
30.0, // 幀率 (FPS)
cv::Size( 640, 480 ), // 單幀圖片分辨率為 640x480
true // 只輸入彩色圖
);
CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 code
CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
MPEG-1是為CD光盤介質(zhì)定制的視頻和音頻壓縮格式;
Motion JPEG是一種視頻壓縮格式,其中每一幀圖像都分別使用JPEG編碼;
MPEG-4利用很窄的帶寬,通過幀重建技術(shù),壓縮和傳輸數(shù)據(jù),以求以最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量;
視頻寫入
VideoWriter對象寫入圖像
cv::VideoWriter::write(
const Mat& image // 寫入圖像作為下一幀
);
我們還有另一種方式,即“<<”操作
my_video_writer << my_frame;
前面我們在VideoCapture中的Read讀視頻的操作也可以用”>>“操作
my_video_writer >> my_frame;
下面我們用到的素材,視頻素材還是我們上次已經(jīng)開始用的《傾倒世界》,圖像素材用我們以前經(jīng)常用的
目標(biāo)
我們是把上面這個圖像寫入到我們播放的視頻里,比如在播放視頻的第15幀,第30幀,第50幀,第65幀,都寫入我們這個圖像,然后播放出來看看。
視頻效果
實(shí)現(xiàn)思路
加載我們的圖片為Mat圖像。
通過VideoCapture加載視頻獲取到視頻的FPS及寬和高
把我們的圖像縮放至上一步獲取到的寬和高大小
創(chuàng)建VideoWriter對象
播放VideoCapture加載的視頻,獲取到的每一幀都寫入到VideoWriter的對象里,當(dāng)判斷到第15幀,第30幀,第50幀,第65幀時寫入我們的Mat加載的圖片;
釋放資源。
代碼編寫
新建一個項(xiàng)目opencv-1003,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
1.加載我們的圖片為Mat圖像
2.通過VideoCapture加載視頻獲取到視頻的FPS及寬和高,并計(jì)算出兩幀相隔的時間
3.把我們的圖像縮放至上一步獲取到的寬和高大小
4.創(chuàng)建VideoWriter對象
上面我們創(chuàng)建的時候直接定義為E盤Family文件夾下的test.avi文件,視頻的格式為MJPG
5.播放VideoCapture加載的視頻,獲取到的每一幀都寫入到VideoWriter的對象里,當(dāng)判斷到第15幀,第30幀,第50幀,第65幀時寫入我們的Mat加載的圖片;
6.釋放資源
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。