이번에는 VideoCapture 클래스를 이용하여 컴퓨터에 연결된 카메라 장치를 사용하는 방법을 알아보겠습니다. 카메라 장치를 열 때에도 VideoCapture 생성자 혹은 VideoCapture::open() 멤버 함수를 사용하는데, 이때는 함수의 인자에 문자열이 아니라 정수 값을 전달합니다. 다음에 나타낸 VideoCapture 생성자와 VideoCapture::open() 멤버 함수는 카메라 장치를 열 때 사용합니다.
VideoCapture::VideoCapture(int index, int apiPreference = CAP_ANY); bool VideoCapture::open(int index, int apiPreference = CAP_ANY); |
|
• index |
카메라와 장치 사용 방식 지정 번호 |
• apiPreference |
사용할 카메라 캡처 API 백엔드 |
• 반환값 |
(VideoCapture::open() 함수) 열기가 성공하면 true, 실패하면 false |
카메라 장치를 사용하려고 할 때 VideoCapture 클래스의 생성자 혹은 VideoCapture::open() 함수에 전달하는 정수 값 index는 다음과 같은 형태로 구성됩니다.
index = camera_id + domain_offset_id
만약 컴퓨터에 한 대의 카메라만 연결되어 있다면 이 카메라의 camera_id 값은 0입니다. 두 대 이상의 카메라가 연결되어 있다면 각각의 카메라는 0보다 같거나 큰 정수를 ID로 갖습니다. domain_offset_id는 카메라 장치를 사용하는 방식을 표현하는 정수 값이며 VideoCaptureAPIs 열거형 상수 중 하나를 지정합니다. 대부분의 경우 domain_offset_id는 자동 선택을 의미하는 0(CAP_ANY)을 사용하기 때문에 index 값은 결국 camera_id와 같은 값으로 설정합니다. 즉, 컴퓨터에 연결된 기본 카메라를 사용하려면 index 값으로 0을 지정하고, 두 대의 카메라가 연결되어 있다면 0 또는 1을 지정합니다.