2012-11-05 2 views
1

빌드를 완료 한 후 불충분 한 메모리 오류가 발생했습니다. 나는 resultImage! = NULL이지만 더 이상 이미지를 만들지 않으려 고 노력했지만 여전히이 문제가 있습니다.메모리 오류가 충분하지 않습니다.

나는 많은 검색을했으나이 문제를 해결할 방법을 찾을 수 없었습니다. 누구든지이 문제로 나를 도울 수 있습니까? 그것의 아주 간단한 코드는 웹캠에서 프레임을 캡처하고 그것을 변환 color.I VB2010 C + + 익스프레스 버전과 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

정확히 무엇이 문제입니까, 아니면 무엇을 묻고 있습니까? –

+0

죄송합니다, 내 문제를 쓰는 것을 잊었습니다. 나는 그것을 만들 때 언젠가는 후에 불충분 한 기억 오류를 가지고있다. 나는 resultImage! = NULL이지만 더 이상 이미지를 만들지 않으려 고 노력했지만 여전히이 문제가 있습니다. 이 문제로 나를 도울 수 있습니까? 감사합니다. – edisonthk

+1

원본 게시물을 편집하여 추가하십시오. 주석에 넣지 마십시오. –

답변

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

당신의 솔루션에 너무 감사드립니다. 예, cvCloneImage() 사용을 중단 한 후에 작동합니다. – edisonthk

관련 문제