真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中如何使用VideoWriter寫入視頻

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可以獲取的編碼格式

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)常用的

C++ 中如何使用VideoWriter寫入視頻

目標(biāo)

我們是把上面這個圖像寫入到我們播放的視頻里,比如在播放視頻的第15幀,第30幀,第50幀,第65幀,都寫入我們這個圖像,然后播放出來看看。

視頻效果

實(shí)現(xiàn)思路

  1. 加載我們的圖片為Mat圖像。

  2. 通過VideoCapture加載視頻獲取到視頻的FPS及寬和高

  3. 把我們的圖像縮放至上一步獲取到的寬和高大小

  4. 創(chuàng)建VideoWriter對象

  5. 播放VideoCapture加載的視頻,獲取到的每一幀都寫入到VideoWriter的對象里,當(dāng)判斷到第15幀,第30幀,第50幀,第65幀時寫入我們的Mat加載的圖片;

  6. 釋放資源。

代碼編寫

新建一個項(xiàng)目opencv-1003,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法

C++ 中如何使用VideoWriter寫入視頻


1.加載我們的圖片為Mat圖像

C++ 中如何使用VideoWriter寫入視頻


2.通過VideoCapture加載視頻獲取到視頻的FPS及寬和高,并計(jì)算出兩幀相隔的時間

C++ 中如何使用VideoWriter寫入視頻


3.把我們的圖像縮放至上一步獲取到的寬和高大小

C++ 中如何使用VideoWriter寫入視頻


4.創(chuàng)建VideoWriter對象

C++ 中如何使用VideoWriter寫入視頻

上面我們創(chuàng)建的時候直接定義為E盤Family文件夾下的test.avi文件,視頻的格式為MJPG


5.播放VideoCapture加載的視頻,獲取到的每一幀都寫入到VideoWriter的對象里,當(dāng)判斷到第15幀,第30幀,第50幀,第65幀時寫入我們的Mat加載的圖片;

C++ 中如何使用VideoWriter寫入視頻

C++ 中如何使用VideoWriter寫入視頻

C++ 中如何使用VideoWriter寫入視頻


6.釋放資源

C++ 中如何使用VideoWriter寫入視頻

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


文章名稱:C++中如何使用VideoWriter寫入視頻
網(wǎng)頁路徑:http://weahome.cn/article/jicpid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部