OpenCV - cvExtractSURF вызывает утечку памяти? - PullRequest
1 голос
/ 08 октября 2010

Я использую функцию OpenCV: cvExtractSURF, но обнаружил серьезную утечку памяти.Кто-нибудь успешно реализовал этот вызов?

Мой код выглядит следующим образом:

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

Есть идеи, где это может быть утечка?Когда я закомментирую строку:

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

утечка не происходит.

1 Ответ

3 голосов
/ 08 октября 2010

Функция cvExtractSURF создает список объектов типа CvSURFPoint и помещает указатель на него в objectKeypoints. Вы должны освободить это.

Добавить звонок ...

cvRelease((void **)&objectKeypoints);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...