简体   繁体   English

OpenCV-cvExtractSURF导致内存泄漏?

[英]OpenCV - cvExtractSURF is causing a memory leak?

I am using the OpenCV function: cvExtractSURF but I am finding a major memory leak. 我正在使用OpenCV函数: cvExtractSURF但是发现主要的内存泄漏。 Has anyone successfully implemented this call? 有人成功实现了此通话吗?

My code is as follows: 我的代码如下:

IplImage *cvImage = [self CreateIplImageFromUIImage:image grayscale:YES];

CvMemStorage* storage = cvCreateMemStorage(0);

CvSeq *objectKeypoints = 0;
//CvSeq *objectDescriptors = 0;

CvSURFParams params = cvSURFParams(self.hessianThreshold, 0);
double tt = (double)cvGetTickCount();

//Extract the features
cvExtractSURF( cvImage, 0, &objectKeypoints, NULL, storage, params, 0);

tt = (double)cvGetTickCount() - tt;
//NSLog(@"%d features found in %gms seconds\n", objectKeypoints->total, tt/(cvGetTickFrequency()*1000.));

cvReleaseImage(&cvImage);
cvReleaseMemStorage(&storage);

Any ideas where this could be leaking? 有什么想法可能会泄漏吗? When I comment out the line: 当我注释掉该行时:

cvExtractSURF( cvImage, 0, &objectKeypoints, NULL, storage, params, 0);

no leak occurs. 没有泄漏发生。

The function cvExtractSURF creates a list of objects of type CvSURFPoint and puts a pointer to it in objectKeypoints. 函数cvExtractSURF创建一个类型为CvSURFPoint的对象列表,并将指向它的指针放在objectKeypoints中。 You have to free that up. 您必须释放它。

Add a call... 添加通话...

cvRelease((void **)&objectKeypoints);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM