Reputation: 1423
I got insufficient memory error after sometime when i built it. I have tried not to create anymore image if the resultImage != NULL but i still got this problem.
I have done many searching but i couldn`t get a way to solve this problem out. Can anyone help me out with this problem? Its a very simple code only capture the frame from webcam and convert it color.I am using VB2010 C++ express edition and opencv2.4
Well, I'm new to opencv and language c too. Please correct my wrong code if can.
#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;
}
Upvotes: 2
Views: 575
Reputation: 23498
most probably cvCloneImage()
allocates memory which never got released. try to use this:
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;
}
Upvotes: 1