当应用程序继续运行时,如何释放相机。它仍然处于有条件的状态。这是代码。我不知道如何发布它
#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;
}
答案 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
。这只会指向一次一帧,所以我认为重命名它对你有帮助。