메뉴 닫기

OpenCV로 비디오 출력하기

OpenCV로 비디오를 출력해보도록 하겠습니다.

코드는 아래와 같습니다.

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main(int argc, char* argv[])
{
	namedWindow("Example", cv::WINDOW_AUTOSIZE);
	VideoCapture cap;
	cap.open(string(argv[1]));

	Mat frame;

	for (; ;) 
	{
		cap >> frame;
		if (frame.empty())
			break;

		imshow("Example", frame);
		if (waitKey(33) >= 0) break;
	}
	return 0;
}

OpenCV로 이미지 출력하기 포스팅에서 설명한 함수는 패스하겠습니다.


① VideoCapture cap;
cap.open(string(argv[1]));

다양한 코덱을 지원하는 VideoCapture 인스턴스 ‘cap’을 하나 만들었습니다. 이 인스턴스를 통해 비디오 파일의 Open/Close가 가능합니다.

open 함수를 사용하여 파일을 하나 열어보았습니다. 인스턴스 ‘cap’은 읽어들인 비디오파일의 모든 정보를 포함하며, 비디오의 시작 부분을 가리키게 됩니다.

② cap >> frame;
if (frame.empty())  break;

cv :: Mat frame은 비디오 프레임을 저장할 데이터 객체를 인스턴스화합니다.

반복문 내부에서 비디오 파일은 프레임 단위로 들어오게 되고, 더이상 로드할 프레임이 없으면 프로그램은 종료합니다.

③ if (waitKey(33) >= 0)  break;

영상은 33ms로 재생됩니다. 재생 중에 키입력이 발생하면, 반복문은 종료됩니다. 프로그램 종료 시, 할당된 데이터는 자동으로 해제됩니다.



답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다