简体   繁体   中英

Insufficient memory error

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;
}

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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM