4.1.1 VideoCapture 클래스
요즘은 일상 속에서도 카메라와 동영상을 많이 사용합니다. 대부분의 노트북 컴퓨터에는 화상 대화를 위한 웹 카메라가 장착되어 있고, 스마트폰 카메라를 이용하여 동영상을 촬영하고 공유하는 일도 빈번하게 일어납니다. 컴퓨터 비전 분야에서도 정지 영상 데이터만을 다루는 것이 아니라 동영상 데이터를 불러와서 처리한다거나 혹은 컴퓨터에 연결된 카메라로부터 실시간으로 영상을 받아 와서 처리하는 응용이 늘어나고 있습니다.
동영상이란 일련의 정지 영상을 압축하여 파일로 저장한 형태입니다. 이때 동영상에 저장되어 있는 일련의 정지 영상을 프레임(frame)이라고 합니다. 그러므로 동영상을 처리하는 작업은 동영상에서 프레임을 추출한 후, 각각의 프레임에 영상 처리 기법을 적용하는 형태로 이루어집니다. 컴퓨터에 연결된 카메라 장치를 사용하는 작업도 카메라로부터 일정 시간 간격으로 정지 영상 프레임을 받아 와서 처리하는 형태입니다. 그러므로 카메라와 동영상 파일을 다루는 작업은 연속적인 프레임 영상을 받아 와서 처리한다는 공통점이 있습니다.
OpenCV에서는 VideoCapture라는 하나의 클래스를 이용하여 카메라 또는 동영상 파일로부터 정지 영상 프레임을 받아 올 수 있습니다. 간략화한 VideoCapture 클래스 정의를 코드 4-1에 나타냈습니다. 참고로 VideoCapture 클래스의 멤버 변수는 모두 protected: 모드로 선언되어 있어서 사용자가 직접 접근할 수 없으며, 코드 4-1에는 표시를 생략했습니다.