如何在OpenCV中释放相机(ubuntu-12.04)

时间:2013-07-04 15:46:29

标签: c opencv

如何在不关闭正在运行的程序的情况下在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;
}

1 个答案:

答案 0 :(得分:0)

问题是,如果没有先初始化(j < 10),就要比较(j == 10)j。这是Undefined Behavior,这是一件非常糟糕的事情。在您的情况下,相机不会关闭。

修复只是在使用之前初始化j,如下所示:

int j = 0;