如何释放相机

时间:2013-07-06 12:25:05

标签: opencv camera

当应用程序继续运行时,如何释放相机。它仍然处于有条件的状态。这是代码。我不知道如何发布它

#include <cv.h>
#include <highgui.h>

main( int argc, char* argv[] ) {
    int i=1;
    CvCapture* capture = NULL;
    capture = cvCreateCameraCapture( 0 );
    IplImage *frames = cvQueryFrame(capture);


    while(1) {
        if (i==20)
        cvReleaseCapture ( &capture );

        char c = cvWaitKey(33);
        if( c == 27 ) break;
        i++;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

你的代码并不完全清楚,所以我希望我能正确理解,但我认为你想要的更像是......

#include <cv.h>
#include <highgui.h>

int main( int argc, char* argv[] ) 
{
    int i=1;
    CvCapture* capture = NULL;
    capture = cvCreateCameraCapture( 0 );
    IplImage *frame = cvQueryFrame(capture);

    while(1) 
    {
        // if we are on the 20th frame, quit.
        if (i==20)
        {
            cvReleaseCapture ( &capture );
            break;
        }

        // if the user types whatever key 27 corresponds to, quit.
        char c = cvWaitKey(33);
        if( c == 27 )
        {
            cvReleaseCapture ( &capture );
            break;
        }
        // do you want to get the next frame?  here.
        frame = cvQueryFrame( capture );
        i++;
    }
    return 0;
}

你的问题是你在释放捕获后没有破坏,所以你将继续使用已发布的摄像头进行循环。此外,您还有IplImage *frames而不是IplImage *frame。这只会指向一次一帧,所以我认为重命名它对你有帮助。