cvQueryFrame() は、 にブレークポイントを置かない限り、灰色のフレームを返しますcvQueryFrame(capture)
。プログラムがブレークポイントに 1 回到達するだけで、その後、カメラから適切なフレームが取得されます。遅延、ダミー フレーム、2 つの組み合わせを試しましたが、そのブレークポイントがないと機能しないようです。
cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
CvCapture *capture = cvCaptureFromCAM(1);
if (capture == NULL)
{
return -1;
}
Mat frame;
for(int i = 0;i<10;i++)
{
frame = cvQueryFrame(capture);
}
while(1)
{
try
{
frame = cvQueryFrame(capture);
imshow("video", frame);
char c = cvWaitKey(1);
if(c == 33)
break;
}
catch(Exception e)
{
break;
}
}
cvReleaseCapture( &capture);
cvDestroyWindow( "video" );
return 0;