C / OpenCV Управление памятью - PullRequest
1 голос
/ 03 марта 2011

Я имею дело с OpenCV и у меня есть вопросы по управлению памятью из их DFT примера кода .

1 Какой самый эффективный способ создания двухканального изображения в openCV? Связанный код, кажется, выделяет два IplImages, а затем объединяет их через

    cvMerge(realInput, imaginaryInput, NULL, NULL, complexInput);

В этом случае можно сделать глубокую копию для объединения двух изображений, что является пустой тратой двух изображений.

2 Кроме того, каков наилучший способ разделения матрицы на две части? Ссылка на код использует

    cvSplit( dft_A, image_Re, image_Im, 0, 0 );

но я думаю, что это может хранить отдельные копии данных в dft_A и image_Re / image_Im (еще одна трата двух изображений)

Спасибо!

PS Я знаю, что связанный код не освобождает использованную память ... это будет исправлено в ближайшее время

PPS Я мог бы проверить это напрямую, но я хотел бы узнать, как вместо этого я могу понять это из документов.

1 Ответ

1 голос
/ 03 марта 2011

Opencv делает довольно умное управление памятью, чтобы избежать ненужных копий.Часто имеет смысл написать простое решение niave, а затем профиль, чтобы проверить, нужно ли его улучшить или улучшить.

См. http://opencv.willowgarage.com/documentation/cpp/memory_management.html

Слияние может быть очень эффективным, если пункт назначенияизображение более плоское - если оно плоское, то все равно необходимо скопировать отдельные действительные и мнимые значения.

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