c++ - cvHoughLines2 内存泄漏

标签 c++ memory-leaks opencv hough-transform

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

谢谢

最佳答案

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

关于c++ - cvHoughLines2 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841038/

相关文章:

c++ - C++ 11统一初始化时出现“结构初始化程序中的过多元素”错误

c - 为什么 valgrind 仅通过多次运行程序就报告不同的结果(不可能/仍然可以到达泄漏)?

c++ - 让网络摄像头在 OpenCV 中工作

JavaCV 给出 java.lang.UnsatisfiedLinkError

c++ - 你如何在 OSX 中使用 QT 设置 OpenCV?

c++ - 如何在 C++ 中生成随机数?

c++ - C++ 中的 C 字符串删除

c++ - 大文件上的 fwrite 字节损坏

c++ - 为什么我的析构函数从未被调用?

Chrome/Firefox 中的 Javascript 内存使用和调试(雷区)