以前は OpenCV 単体で複数カメラを使おうとすると不具合があって、そのためには VideoInput ライブラリを使うのが常套手段だったんだけど、VideoInput ライブラリが OpenCV に組み込まれるという話があった。バージョン 2.1 にしたので確かめてみた。
まずはソースを見てみたら、cvcap_dshow.cpp で、
#ifdef HAVE_VIDEOINPUT
#include "videoinput.h"
となっていたので、組み込まれているっぽい。3rdparty\lib の下に videoInput.lib がありました。
実際に試してみたら、こんなコードできちんと動いた。
#include
#include
int main( int argc, char *argv[] )
{
CvCapture *capture1=NULL, *capture2=NULL;
IplImage *frame1 = NULL, *frame2 = NULL;
int c;
capture1 = cvCreateCameraCapture( 0 );
capture2 = cvCreateCameraCapture( 1 );
cvNamedWindow ("1stCam", CV_WINDOW_AUTOSIZE);
cvNamedWindow ("2ndCam", CV_WINDOW_AUTOSIZE);
while( 1 ){
frame1 = cvQueryFrame( capture1 );
frame2 = cvQueryFrame( capture2 );
cvShowImage( "1stCam", frame1 );
cvShowImage( "2ndCam", frame2 );
c = cvWaitKey(2);
if( c == '\x1b' ){
break;
}
}
cvReleaseCapture (&capture1);
cvReleaseCapture (&capture2);
cvDestroyWindow ("1stCam");
cvDestroyWindow ("2ndCam");
return 0;
}
cvCreateCameraCapture() に番号渡せば問題ないみたい。
何台のカメラまでいけるんだろ?