簡體   English   中英

內存不足錯誤

[英]Insufficient memory error

我在構建它后的某個時間沒有足夠的內存錯誤。 如果resultImage!= NULL,我嘗試不再創建任何圖像,但是我仍然遇到此問題。

我已經做了很多搜索,但是我找不到解決這個問題的方法。 誰能幫我解決這個問題? 它是一個非常簡單的代碼,僅捕獲來自網絡攝像頭的幀並將其轉換為顏色。我正在使用VB2010 C ++ Express Edition和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;
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM