首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cvHoughLines2内存泄漏

cvHoughLines2内存泄漏
EN

Stack Overflow用户
提问于 2011-04-30 18:11:12
回答 1查看 1.8K关注 0票数 1

OpenCV method HoughLines2有没有从现在(2.1.0.6版)开始就没有修复过的内存泄漏,或者我的这部分代码有什么问题?

代码语言:javascript
复制
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);

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-30 18:25:31

您正在使用cvClearMemStorage。这不会释放内存,它只是重置一些指针。如果你想释放内存,你应该使用cvReleaseMemStorage(&storage) (顺便说一句,你不再需要cvClearSeq了,因为你会释放内存)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5841038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档