2013-07-04 2 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

Смежные вопросы