内存不足错误

时间:2012-11-05 06:45:09

标签: c++ memory opencv

我构建它之后的某段时间内内存错误不足。我已经尝试过不再创建图像,如果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;
}

1 个答案:

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