더북(TheBook)

예를 들어 시스템 기본 카메라를 열고, 카메라의 기본 프레임 크기를 확인하려면 다음과 같이 코드를 작성할 수 있습니다.

VideoCapture cap(0);
 
int w = cvRound(cap.get(CAP_PROP_FRAME_WIDTH));
int h = cvRound(cap.get(CAP_PROP_FRAME_HEIGHT));

VideoCapture::get() 함수는 카메라 또는 동영상 파일 속성을 double 자료형으로 반환합니다. 그러므로 실제 코드에서 정수형 변수에 프레임 크기를 저장하려면 반올림하여 정수형으로 변환하는 것이 좋습니다. 앞의 소스 코드에서 사용된 cvRound() 함수는 OpenCV에서 제공하는 반올림 함수이고, 변수 w에는 프레임 가로 크기, h에는 프레임 세로 크기가 저장됩니다.

VideoCapture::get() 함수와 반대로 현재 열려 있는 카메라 또는 비디오 파일 재생과 관련된 속성 값을 설정할 때에는 VideoCapture::set() 함수를 사용합니다.

bool VideoCapture::set(int propId, double value);

propId

속성 ID. VideoCaptureProperties 열거형 중 하나를 지정합니다.

value

지정할 속성 값

반환값

속성 지정이 가능하면 true, 아니면 false

 

VideoCapture::set() 함수의 속성 ID에도 앞서 표 4-2에 정리한 VideoCaptureProperties 열거형 상수를 지정합니다. 만약 video.mp4 파일을 열어서 100번째 프레임으로 이동하려면 다음과 같이 코드를 작성합니다.

VideoCapture cap("video.mp4");
cap.set(CAP_PROP_POS_FRAMES, 100);

지금까지 VideoCapture 클래스와 멤버 함수 기능에 대해 알아보았습니다. 다음 절에서는 카메라 또는 동영상 파일을 다루는 예제 프로그램을 만들어 보면서 VideoCapture 클래스를 사용하는 소스 코드 작성 방법에 대해 알아보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.