VideoWriter 클래스를 통해 영상을 저장하는 방법에 대해 알아보려고 한다.
cv::VideoWriter video_writer;
video_writer.open(file_path, fourcc, fps, Size, isColor);
mp4
, avi
, mov
...double fps = input_video.get(CAP_PROP_FPS);
참고: 이전 포스트 - ?VideoCapture과 fpscv::Size(w, h);
false
, 컬러 영상이면 true
개인적으로 코덱을 설정하는데 애를 먹었다. 맥에서 기본으로 지원하지 않는 코덱도 있어서 이것 저것 시도한 후에 되는 것을 찾았다.
video_writer.open("../result1.mp4", //path
VideoWriter::fourcc('a', 'v', 'c', '1'), //fourcc
30, //fps
Size(2 * FRAME_WIDTH, 2 * FRAME_HEIGHT), //size
true //isColor
);
video_writer << frame;
video_writer.release();
#include "opencv2/opencv.hpp"
using namespace cv;
int main(){
VideoCapture input_video("input_path");
if (!input_video.isOpened()) {
cout << "Can't open video\n";
return;
}
int fourcc = VideoWriter::fourcc('a', 'v', 'c', '1');
double fps = input_video.get(CAP_PROP_FPS);
Size size = Size(input_video.get(CAP_PROP_FRAME_WIDTH), input_video.get(CAP_PROP_FRAME_HEIGHT));
VideoWriter output_video;
output_video.open("output_path", fourcc, fps, size, true);
Mat frame, result;
while (true) {
video >> frame;
if (frame.empty()) {
break;
}
result = function(frame); // do something...
output_video << result;
}
input_video.release();
output_video.release();
}