当我尝试编译代码时出现上述错误。它是一个非常非常简单的功能,我无法弄清楚为什么我有这个问题。最糟糕的是,我甚至无法找到array.cpp在opencv文件夹中的位置,所以我看不出什么是错的。有人知道吗?请帮助!
int imgreg_capture_image()
{
/*********************Try capturing an image from the camera first*************************************/
CvCapture* imgregCapture = cvCaptureFromCAM( CV_CAP_ANY );
if ( !imgregCapture ) {
fprintf( stderr, "ERROR: capture is NULL \n" );
exit(-1);
}
// Get one frame
IplImage* frame = 0;
frame = cvQueryFrame(imgregCapture);
if ( !frame ) {
fprintf( stderr, "ERROR: frame is null...\n" );
return -1;
}
//save the image into a file
cvSaveImage( CAPTURE_FILE, frame );
// Release the capture device housekeeping
cvReleaseCapture(&imgregCapture);
cvReleaseImage(&frame);
return 0;
/***************Finish Try capturing an image from the camera first*************************************/
}
答案 0 :(得分:1)
cvQueryFrame
返回的图像不必被释放stated in the documentation。在您的情况下删除
cvReleaseImage(&frame);
frame
的de / allocation由捕获设备内部管理。
希望有所帮助!
编辑:如果您希望进一步处理图片,请使用cvCopy(frame, yourManagedImage);
,然后使用yourManagedImage
代替原始frame
。