DevelopmentTool/OpenCV

[OpenCV] VideoWriter 클래스

유제필 2022. 11. 17. 09:08

VideoWriter 클래스란

VideoWriter 클래스는 OpenCV에서 동영상 파일을 생성하고 프레임을 저장하기 위해서 사용되는 클래스이다.

 

class VideoWriter
{
public:
     VideoWriter();
     VideoWriter(const String& filename. int fourcc, double fps, Size frameSize, bool isColor = true);
virtual ~VideoWriter();

     virtual bool open(const String& filename, int fourcc, double fps, Size frameSize, bool isColor = true);
     virtual bool ioOpened() const;
     virtual void release();

     virtual VideoWriter& operator << (const Mat& image);
     virtual void write(const Mat& image);

     virtual bool set(int proId, double value);
     virtual double get(int proId) const;

     static int fourcc(char c1, char c2, char c3, char c4);
     ...
};

 

새로운 동영상 파일을 만들려면 VideoWriter 클래스 객체를 먼저 생성해야 한다.

 

VideoWriter video;

간단하게 VideoWriter 기본 생성자를 이용하여 객체를 생성할 수 있다.

VideoWriter 멤버 함수

VideoWriter::open()

VideoWriter::VideoWriter(const String& filename, int fourcc, double fps, Size frameSize, bool isColor = true);
bool VideoWriter::open(const String& filename, int fourcc, double fps, Size frameSize, bool isColor = true);

filename : 저장할 동영상 파일 이름
fourcc : 동영상 압축 코덱을 표현하는 4- 문자 코드
fps : 저장할 동영상의 초당 프레임 수
frameSize : 동영상 프레임의 가로 및 세로 크기
isColor : 값이 trudlaus 컬러 동영상 저장, false이면 그레이스케일 동영상으로 저장한다. (Windows 운영 체제에서만 지원)
반환값 : 함수 열기에 성공하면 true, 실패 시 false 반환

VideoWriter 객체를 생성하였으면 VideoWriter::open() 멤버 함수를 이용해 저장할 동영상 파일을 쓰기 모드로 열어야 한다.

fourcc는 4- 문자 코드(four character code)의 약자이며, 말 그대로 4개의 문자로 구성된 코드이다.

fourcc는 동영상 파일의 코덱, 압축 방식, 색상 혹은 픽셀 포맷 등을 정의하는 정수 값이며,

코덱을 표현하는 4개의 문자를 묶어서 fourcc를 생성한다.

VideoWriter::fourcc();

static int VideoWriter::fourcc(char c1, char c2, char c3, char c4);

c1, c2, c3, c4 : 코덱을 표현하는 1byte 문자 4개
반환값 : 정수형 4-문자 코드

 

VideoWriter::write();

VideoWriter& VideoWriter::operator << (const Mat& image);
void VideoWriter::write(InputArray Image);

image : 추가할 프레임

열려 있는 동영상 파일에 새로운 프레임을 추가하는 함수로, << 연산자 재정의 또는 VideoWriter::write() 함수를 사용한다.

프레임을 추가할 때, 새로 추가하는 image 프레임 크기는 동영상 파일을 생성할 때 지정했던 프레임 크기와 같아야 한다.

또한 컬러로 설정된 동영상 파일에 그레이스케일 영상을 추가하면 정상적으로 저장되지 않는다.

VideoWriter::release();

virtual void VideoWriter::release();

프레임 저장이 완료되었으면 열려 있던 파일을 닫기 위해 VideoWriter::release() 함수를 호출해야 한다.

VideoWriter 클래스의 소멸자에서 VideoWriter::release() 함수를 호출하기 때문에 객체가 소멸되면 자동으로 파일이 닫힌다

'DevelopmentTool > OpenCV' 카테고리의 다른 글

[OpenCV] 도형 그리기  (0) 2022.11.17
[OpenCV] 직선 그리기  (0) 2022.11.17
[OpenCV] VideoCapture 클래스  (0) 2022.11.17
[OpenCV] InputArray, OutputArray 클래스  (0) 2022.11.17
[OpenCV] Scalar 클래스  (0) 2022.11.17