4.1.2 카메라 입력 처리하기
앞 절에서 설명한 VideoCapture 클래스를 사용하여 컴퓨터에 연결된 카메라로부터 프레임을 받아 와서 처리하는 예제 프로그램을 만들어 보겠습니다. VideoCapture 클래스를 이용하려면 일단 VideoCapture 클래스 객체를 생성해야 합니다. VideoCapture 객체는 단순히 VideoCapture 클래스 타입의 변수를 하나 선언하는 방식으로 생성할 수 있습니다. 일단 VideoCapture 기본 생성자를 이용하여 변수를 하나 선언하고, 그다음에는 VideoCapture::open() 멤버 함수를 이용하여 사용할 카메라 장치를 열어야 합니다. 컴퓨터에 연결되어 있는 기본 카메라를 사용하려면 VideoCapture::open() 함수의 인자에 0을 지정합니다.
VideoCapture cap;
cap.open(0);
그런데 VideoCapture 클래스는 객체 생성과 동시에 카메라 장치를 열 수 있는 형태의 생성자도 지원하므로 앞에서 두 줄로 쓴 코드는 다음과 같이 한 줄로 쓸 수 있습니다.
VideoCapture cap(0);
일단 cap 변수를 선언하고 기본 카메라 장치를 사용하도록 코드를 작성하였지만 실제로 카메라 장치가 사용 가능한 상태로 열렸는지 확인하는 것이 좋습니다. 카메라 장치가 정상적으로 열렸는지는 VideoCapture::isOpened() 멤버 함수를 이용하여 확인할 수 있습니다. 만약 VideoCapture::isOpened() 함수가 false를 반환하면 카메라 장치를 사용할 수 없는 상태이므로 예외 처리 코드를 추가하는 것이 좋습니다.
if (!cap.isOpened()) { cerr << "Camera open failed!" << endl; return -1; }