동영상을 입력받아 전처리를 하여 동영상으로 저장하는 방법을 알아보도록 하겠습니다.

 

동영상을 저장하기 위해선 Opencv의 클래스인 VideoWriter를 사용해야합니다.

 

또한 저장시킬 동영상의 코덱, 프레임, 영상의 크기 등의 정보를 정해야 합니다.

 

 

 

아래 코드는 영상을 입력받아 크기를 500x500으로 줄이고 RGB에서 Grayscale을 적용한 뒤

 

동영상으로 저장하는 과정입니다. 

 

* 본 코드는 Opencv 3.1.0 Version에서 사용하였습니다.

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main()
{
	Mat img;
	Mat pre_p;

	VideoCapture capture("D:\\ship.mp4"); // 입력 영상

	double fps = 35; // 영상 프레임
	int  fourcc = VideoWriter::fourcc('D', 'X', '5', '0'); // 코덱 설정


	VideoWriter  save;

	//save.open(입력 영상, 코덱, 프레임, 영상 크기, 컬러)
	save.open("D:\\save_Video.avi", fourcc, fps, Size(500, 500),0);

	while (1) {
		capture >> img;       // 카메라 영상받기
		if (img.empty())
			break;
		
		pre_p = img.clone(); // 영상 복사
		resize(pre_p, pre_p, Size(500, 500), 0, 0, CV_INTER_LANCZOS4); // 이미지 리사이징
		cvtColor(pre_p, pre_p, CV_RGB2GRAY); // Grayscale
		save << pre_p; // 프레임을 동영상으로 저장
		

		imshow("원본 영상", img);
		imshow("전처리 영상", pre_p);

		waitKey(10);
	}
}

 

원본 영상의 한 프레임

 

전처리를 거친 영상의 한 프레임

 

좌측 : 원본 영상 / 우측 : 저장된 영상

+ Recent posts