1、代碼如下:
#include<opencv2/opencv.hpp>
using namespace cv;
//-----------------------------------【main()函數】--------------------------------------------
// 描述:控制檯應用程序的入口函數,我們的程序從這裏開始
//-------------------------------------------------------------------------------------------------
void main()
{
//【1】從視頻文件讀入視頻
VideoCapture capture("祝福片.avi");//讀取視頻文件
if (!capture.isOpened())//沒有打開視頻文件的話,就返回。
return;
Size size0 = Size(capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT));
VideoWriter writer("out.avi", CV_FOURCC('X', 'V', 'I', 'D'), capture.get(CV_CAP_PROP_FPS), size0, true);
//【2】循環顯示每一幀
while (1)
{
Mat frame; //定義一個Mat變量,用於存儲每一幀的圖像
capture >> frame; //讀取當前幀
writer << frame;//等同於writer.write(frame);寫入幀。
if (frame.empty())
{
break;
}
imshow("Video", frame); //顯示當前幀
waitKey(30); //延時30ms
}
capture.release();//釋放資源
destroyAllWindows();//關閉所有窗口
}
2、效果如下:
3、程序運行目錄下寫入了一個名爲“out.avi”的視頻文件。
4、注意事項:
1)寫入視頻前需安裝對應的編解碼器 (如:XVID)
2)生成視頻是否支持彩色應與構造函數設置一致
3)生成視頻尺寸需與讀取視頻尺寸一致