我构建它之后的某段时间内内存错误不足。我已经尝试过不再创建图像,如果resultImage!= NULL但我仍然遇到这个问题。
我做了很多搜索,但我找不到解决这个问题的方法。任何人都可以帮我解决这个问题吗?它是一个非常简单的代码,只从网络摄像头捕获帧并转换它的颜色。我使用VB2010 C ++ express版和opencv2.4
嗯,我也是opencv和c语言的新手。如果可以,请更正我的错误代码。
#include "stdafx.h"
int main(){
CvCapture* capture = cvCaptureFromCAM(0);
if(!capture) return -1;
char key;
cvNamedWindow("Frame");
IplImage* frameImage = NULL;
IplImage* resultImage = NULL;
IplImage* HSVImage = NULL;
while(1){
frameImage = cvQueryFrame(capture);
if(!frameImage) break;
if(resultImage == NULL){
resultImage = cvCreateImage(cvGetSize(frameImage),IPL_DEPTH_8U,3);
HSVImage = cvCreateImage(cvGetSize(frameImage),IPL_DEPTH_8U,3);
}
resultImage = cvCloneImage(frameImage);
cvCvtColor(resultImage,HSVImage,CV_RGB2HSV);
cvShowImage("Frame",HSVImage);
key = cvWaitKey(20);
if(key == 27) break;
}
cvReleaseCapture(&capture);
cvReleaseImage(&resultImage);
cvReleaseImage(&HSVImage);
cvDestroyAllWindows();
return 0;
}
答案 0 :(得分:1)
最有可能cvCloneImage()
分配从未发布过的内存。试着用这个:
IplImage* HSVImage = cvCreateImage(cvGetSize(frameImage),IPL_DEPTH_8U,3);
while(1){
IplImage* frameImage = cvQueryFrame(capture);
if(!frameImage) break;
cvCvtColor(frameImage,HSVImage,CV_RGB2HSV);
cvShowImage("Frame",HSVImage);
cvReleaseImage(frameImage);
key = cvWaitKey(20);
if(key == 27) break;
}