如何在不关闭正在运行的程序的情况下在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;
}发布于 2013-07-05 03:31:39
问题是,您在没有首先初始化j的情况下就比较了(j < 10)和(j == 10)。这是Undefined Behavior,这是一件非常糟糕的事情。在您的情况下,它碰巧相机没有关闭。
修复方法很简单,就是在使用j之前将其初始化,如下所示:
int j = 0;https://stackoverflow.com/questions/17474197
复制相似问题