2013-07-04 35 views
0

如何在不關閉正在運行的程序的情況下在OpenCV中釋放相機? 我用下面的代碼,但相機仍處於開啓狀態。如何在OpenCV中釋放相機(ubuntu-12.04)

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

的問題是,你比較(j < 10)(j == 10)不首先初始化j。這是Undefined Behavior,這是一件非常糟糕的事情。在你的情況下,發生相機不關閉。

的解決方法是使用它之前,像這樣簡單地初始化j

int j = 0; 
+0

奧勒留謝謝你的答案,但它並沒有解決問題。我已初始化變量j,但相機仍處於開啓狀態。我的目標是使用單個相機進行兩個獨立的過程。所以我開始使用這個代碼。 – user2551056