C ++ / OpenCV IplImage * утечка памяти

Я создаю визуальную панель, которая соответствует одному большому (IplImage *), по которому метод выполняет итерацию для размещения в относительных позициях обновлений графика.

это выглядит так

визуальная панель для графиков, которые обновляются каждую итерацию

в коде на каждой итерации эти «заполнители» / «слоты» обновляются соответствующим графическим изображением (из объекта построения, который создает изображение) в соответствующей позиции (позиции создаются и помещаются в карту относительно количества графов Я замышляю)

Причина, по которой я не выполняю непосредственное отображение на панели, заключается в том, что я сконструировал эту панель так, чтобы она принимала и отображала любой IplImage для помещения в «слот», что я и сделаю позже.

Я знаю, что IplImages устарел и ужасен в управлении памятью, если не правильно выпущен, однако я использую библиотеку, которая использует старый opencv, поэтому для удобства всего (потому что я пытался преобразовать все в Mat, но это усложняет вещи больше), я продолжаю с IplImages

Я нашел, где что-то пошло не так, и вот оно:

void RsPanel::updateComponents()
{
for (int i = 0; i < totalspots; i++) {

CvRect rectangle = cvRect(positionMap[i].x, positionMap[i].y, slotSize.width, slotSize.height);
cvSetImageROI(window, rectangle);

img = slots[i].getImage();
cvCopy(img, window);
cvResetImageROI(window);
}cvShowImage(name, window);

точнее здесь:

img = slots[i].getImage();

из того, что я понимаю, утечка памяти возникает из-за того, что предыдущий «img» не был выпущен должным образом, однако, когда я использую cvReleaseImage для освобождения, все просто вылетает (потому что из того, что я понимаю, это нужно сделать после того, как я закончу с использованием образа ,

похоже на это

Я попытался выпустить «img» и cvCloneImage-один из слота (slots [i] -> getImage ()), однако это дает мне ту же проблему с памятью

без освобождения, в течение минуты, программа накапливает до 1.7 ГБ ОЗУ и выдает сообщение об ошибке памяти.

То, как я это делаю, я полагаю, не самое эффективное, но моя борьба с управлением памятью (исходя из опыта Java) все еще нуждается в их обучающих моментах.

Любые советы, чтобы подойти к этому?

Заранее спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector