如何在不关闭正在运行的程序的情况下在OpenCV中释放相机? 我使用了以下代码,但相机仍处于运行状态。
main( int argc, char* argv[] )
{
int j;
CvCapture* capture = NULL;
capture = cvCreateCameraCapture( 0 );
IplImage *frames = cvQueryFrame(capture);
//Create a new window
cvNamedWindow( "Recording ...press ESC to stop !", CV_WINDOW_AUTOSIZE );
while(1)
{
if (j<10)
{
frames = cvQueryFrame( capture );
cvShowImage( "Recording ...press ESC to stop !", frames );
}
j++;
if(j==10)
cvReleaseCapture ( &capture );
char c = cvWaitKey(33);
if( c == 27 ) break;
}
cvDestroyWindow ( "Recording ...press ESC to stop !");
return 0;
}
答案 0 :(得分:0)
问题是,如果没有先初始化(j < 10)
,就要比较(j == 10)
和j
。这是Undefined Behavior,这是一件非常糟糕的事情。在您的情况下,相机不会关闭。
修复只是在使用之前初始化j
,如下所示:
int j = 0;