如何在OpenCV中释放摄像头(ubuntu-12.04)

如何在OpenCV中释放摄像头(ubuntu-12.04),c,opencv,C,Opencv,如何在不关闭正在运行的程序的情况下在OpenCV中释放相机? 我使用了以下代码,但相机仍处于on状态 main( int argc, char* argv[] ) { int j; CvCapture* capture = NULL; capture = cvCreateCameraCapture( 0 ); IplImage *frames = cvQueryFrame(capture); //Create a new window cvN

如何在不关闭正在运行的程序的情况下在OpenCV中释放相机? 我使用了以下代码,但相机仍处于on状态

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;
}
main(int-argc,char*argv[])
{
int j;
CvCapture*capture=NULL;
捕获=cvCreateCameraCapture(0);
IplImage*frames=cvQueryFrame(捕获);
//创建一个新窗口
cvNamedWindow(“录制…按ESC停止!”,CV_窗口_自动调整大小);
而(1)
{

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

修复方法就是在使用前初始化
j
,如下所示:

int j = 0;

Aurelius感谢您的回答,但它并没有解决问题。我已经初始化了变量j,相机仍然处于打开状态。我的目标是使用单个相机进行两个单独的进程。因此,我从这段代码开始。