Проблема освобождения памяти с cvHoughLines2 - PullRequest
0 голосов
/ 17 сентября 2010

У меня проблема с javaCV:

CvMemStorage storage = CvMemStorage.create();

CvSeq lines = cvHoughLines2( houghInputImage, storage.getPointer(),
     cv.CV_HOUGH_PROBABILISTIC, rho, Math.PI/theta, threshold, param1, param2 );

// ...

storage.release();

Этот код не освобождает память. Используется память роща, пока мой ноутбук не умрет. Если я закомментирую строку cvHoughLines2, то проблем не будет, используемая память не растет.

Можете ли вы помочь мне, почему это происходит? Что я не прав?

Моя среда: XP Home, OpenCV 2.1, JavaCV20100730, JRE6.

Ответы [ 2 ]

1 голос
/ 16 января 2011

У меня была эта проблема и с JavaCV.Я не уверен, где именно проблема лежит, но я решил ее, заменив следующую строку:

storage.release();

на:

cvClearMemStorage(lines.storage);

Кажется, важно освободить память изобъект хранения в результирующем CvSeq, а не в том, который вы изначально передали.

Надеюсь, это поможет!

0 голосов
/ 20 сентября 2010

Обработка хранилища работает правильно в OpenCV, поэтому, возможно, проблема может быть найдена в JavaCV.

Я предполагаю, что вы вызываете код выше в цикле.Вы должны попытаться переместить создание и освобождение хранилища за пределы цикла, и вы можете потерять память только в конце цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...