単純に、カメラ関係の引数やら関数を2つに増やしてビルド・実行。
-----
#include
#include
int main( int argc, char** argv ){
int key; CvCapture *capture1, *capture2;
IplImage *frameImage1, *frameImage2;
char windowNameCapture1[] = "Capture1";
char windowNameCapture2[] = "Capture2";
if((capture1 = cvCreateCameraCapture(0)) == NULL ){
printf( "カメラ1が見つかりません\n" );
return -1;
}
if((capture2 = cvCreateCameraCapture(1)) == NULL ){
printf( "カメラ2が見つかりません\n" );
return -1;
}
cvNamedWindow( windowNameCapture1, CV_WINDOW_AUTOSIZE );
cvNamedWindow( windowNameCapture2, CV_WINDOW_AUTOSIZE );
while( 1 ){
frameImage1 = cvQueryFrame( capture1 );
frameImage2 = cvQueryFrame( capture2 );
cvShowImage( windowNameCapture1, frameImage1 );
cvShowImage( windowNameCapture2, frameImage2 );
key = cvWaitKey( 1 );
if( key == 'q' ){ break; }
}
cvReleaseCapture( &capture1 );
cvReleaseCapture( &capture2 );
cvDestroyWindow( windowNameCapture1 );
cvDestroyWindow( windowNameCapture2 );
return 0;
}
-----
あっけなく実行可能。
以前、Let's Noteでやったときは2台目が全く動かなかったのでDirectShowを駆使してなんとか映しだしたのだが・・・。コンピュータによるのだろうか?研究用に購入したPCがこれまでになく調子がいい。○○工房さんの店長さんにボードなどの相性について相談に乗ってもらったのがよかったのかも。
ちなみに、写らない人は、USBボードやUSBカードを別途用意してUSBコントローラを分けるとうまくいくようです(本人確認)。USBの口が4つあってもネットワークのHUBのようなもので、制御しているところが1つになり2台を同時に制御してくれないようです。
さて、次はIEEEのカメラだな。
0 件のコメント:
コメントを投稿