한 프로그램에서 두 대의 연결된 USB 웹캠의 영상을 출력하려고 하였다.
그런데 두 프로그램 중 하나의 카메라 영상만이 출력되었다.
CvCapture* capture1 = cvCaptureFromCAM(0); CvCapture* capture2 = cvCaptureFromCAM(1);
이런 식으로 하면 이론적으로는 두 대의 카메라 영상이 capture1, capture2에 잡혀야 하는데
도무지 의도하는대로 작동하지 않았다.
몇 시간을 고생하다가 해결책을 찾았는데
독립된 USB 버스(BUS)에 각각의 카메라를 연결하면 되는 것이었다.
즉, 나는 하나의 웹캠은 컴퓨터 본체의 앞면 USB 포트에 연결하고,
나머지 하나의 웹캠은 본체의 뒷면 USB 포트에 연결함으로써 이 문제를 해결하였다.
* 참고: cvGetCaptureDomain() 함수를 이용하면 연결된 카메라의 도메인 값을 얻어올 수 있다.
연결되지 않았거나 알 수 없는 장치라면 CV_CAP_ANY를 반환한다. 이외의 반환되는 값들은 다음과 같이 정의되어 있다. (highgui_c.h 참고)
이 값들은 cvCaptureFromCAM()를 호출할 때 매개변수로 넣을 수 있다. ( index = camera_index + domain_offset (CV_CAP_*) )
참고한 OpenCV 버전은 2.4.3 이다.
CV_CAP_ANY =0, // autodetect CV_CAP_MIL =100, // MIL proprietary drivers CV_CAP_VFW =200, // platform native CV_CAP_V4L =200, CV_CAP_V4L2 =200, CV_CAP_FIREWARE =300, // IEEE 1394 drivers CV_CAP_FIREWIRE =300, CV_CAP_IEEE1394 =300, CV_CAP_DC1394 =300, CV_CAP_CMU1394 =300, CV_CAP_STEREO =400, // TYZX proprietary drivers CV_CAP_TYZX =400, CV_TYZX_LEFT =400, CV_TYZX_RIGHT =401, CV_TYZX_COLOR =402, CV_TYZX_Z =403, CV_CAP_QT =500, // QuickTime CV_CAP_UNICAP =600, // Unicap drivers CV_CAP_DSHOW =700, // DirectShow (via videoInput) CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK CV_CAP_OPENNI =900, // OpenNI (for Kinect) CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion) CV_CAP_ANDROID =1000, // Android CV_CAP_XIAPI =1100, // XIMEA Camera API CV_CAP_AVFOUNDATION = 1200 // AVFoundation framework for iOS (OS X Lion will have the same API)
'Development > Failure Log' 카테고리의 다른 글
Eclipse ADT 설치 후 아이콘 및 메뉴가 안 보일 때 (8) | 2013.03.01 |
---|---|
"\ndk-build.cmd": Launching failed (0) | 2013.01.01 |
복사 생성자를 사용할 수 없거나 복사 생성자가 'explicit'으로 선언되었습니다. (0) | 2012.11.13 |
java.io.IOException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다 (1) | 2012.09.24 |
The type HttpServer is not accessible due to restriction on required library... (2) | 2012.09.21 |