2011-03-03 122 views
1

我正在處理OpenCV並從他們的DFT example code有一些內存管理問題。C/OpenCV內存管理

在openCV中,創建雙通道圖像的最有效方法是什麼?鏈接的代碼似乎分配兩個IplImages,然後通過

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

將它們組合起來我這這可能使深拷貝兩幅圖像,這是兩個圖像的浪費結合起來。

此外,將矩陣分成兩部分的最佳方法是什麼?鏈接的代碼使用

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

,但我覺得這可能保持數據的單獨副本中dft_A和image_Re/image_Im

感謝(兩個圖像的另一種浪費)!

PS我知道代碼鏈接到不釋放它使用的內存...將盡快修復

PPS我可以直接測試這一點,但我想了解我如何從想出解決辦法而不是文檔。

回答

1

Opencv做了很多聰明的內存管理以避免不必要的副本。編寫簡單的niave解決方案然後配置文件來檢查是否需要或可以改進是很有意義的。

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

合併可能是非常有效的,如果目標圖像爲刨牀 - 如果它是平的,則個人實部和虛值都將不得不被無論如何都會被複制。