Утечка памяти в cvHoughLines2 - PullRequest
       17

Утечка памяти в cvHoughLines2

1 голос
/ 30 апреля 2011

Есть ли в методе OpenCV HoughLines2 утечка памяти, которая с тех пор не устранена (версия 2.1.0.6), или что-то не так с этой частью моего кода?

CvMemStorage *storage = cvCreateMemStorage(0);
CvSeq *linesSeq = 0;
double smallL = 0.0, bigL=0.0, smallA = 0.0, bigA = 0.0;
linesSeq = cvHoughLines2(cannyImg, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180.0, 30, 50, 15);
for( int i = 0;i < linesSeq->total; i++ ){
    CvPoint* line = (CvPoint*)cvGetSeqElem(linesSeq,i);
    double sz = sqrt((line[0].x- line[1].x) *(line[0].x- line[1].x) + (line[0].y -line[1].y)*(line[0].y-line[1].y));
    if(sz < 70.0 ) smallL+=1.0;
    else bigL +=1.0;

    double deltaY = line[1].y - line[0].y;
    double deltaX = line[1].x - line[0].x;
    double angle;
    if ( abs(deltaX) > 1e-7){
        angle = atan2(deltaY, deltaX);

        if (angle < 0.1) smallA+=1.0;
        else bigA+=1.0;
    }else{

    }
 }

cvClearMemStorage(storage);
cvClearSeq(linesSeq);
cvReleaseImage(&cannyImg);

Спасибо

1 Ответ

3 голосов
/ 30 апреля 2011

Вы используете cvClearMemStorage. Это не освобождает память, оно просто сбрасывает некоторые указатели. Если вы хотите освободить память, вы должны использовать cvReleaseMemStorage(&storage) (и, кстати, вам больше не понадобится cvClearSeq, поскольку вы бы освободили память).

...