前言
VideoWriter:视频写入相关类
代码实现
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char **argv)
{
Mat frame;
VideoCapture cap("./image/1.mp4"); // 需要保存的视频(源视频)
if (!cap.isOpened()) {
cout << "open video fail!" << endl;
return -1;
}
// 获取一帧图像
cap >> frame;
// 没有获取到图像
if (frame.empty()) {
cout << "get frame fail!" << endl;
return -1;
}
// 是否为彩色图像
bool isColor = (frame.type() == CV_8UC3);
VideoWriter frame_write;
string save_name = "./image/1.avi"; // 保存视频文件名
int codec = VideoWriter::fourcc('M', 'J', 'P', 'G'); // 获取编码器
double fps = cap.get(CAP_PROP_FPS); // fps
frame_write.open(save_name, codec, fps, frame.size(), isColor); // 打开保存视频的文件视频流
// 文件视频流是否打开成功
if (!frame_write.isOpened()) {
cout << "create videowrite fail!" << endl;
return -1;
}
for (;;) {
cap >> frame;
if (frame.empty()) {
break;
}
frame_write.write(frame); // 保存视频
imshow("video", frame);
char c = waitKey(1000 / fps);
if (c == 27)
break;
}
// 释放资源
cap.release();
frame_write.release();
destroyAllWindows();
return 0;
}
End
1