Opencv中cvLoadImage記憶體洩露問題

2021-05-27 00:41:20 字數 962 閱讀 4722

cvloadimage函式:

在程式中這個函式使用一次兩次感覺不來,但在處理序列影象迴圈呼叫這個函式時,記憶體洩露的可能讓你目瞪口呆!

最近,在乙個2000張樣張的資料集上進行批處理, 我觀察任務管理器記憶體分配的情況,發現內存在不斷的被消耗掉!

原因可能是,每次loadimage的時候,記憶體都會重新分配一塊記憶體給它,而原來的只要沒有人工釋放,就會被保留。

因此,在本次迴圈結束時使用cvreleaseimage(&pimg);進行了釋放,記憶體才不會被消耗乾淨。

在 網上還查到了另外的解決方法:

使用cvvimage類代替。並且使用cvvimage類的load函式。

使用過程大概如下:

//變數定義:

cvvimage psrcimg;

iplimag *psrcimgcopy ;                       //使用iplimag變數做個拷貝。畢竟iplimag 類處理方便。

//獲取影象:

psrcimg.load(str);                                //str為cstring型別的影象檔名

psrcimgcopy = psrcimg.getimage();   //拷貝出psrcimg的影象資料。

//釋放記憶體

psrcimg變數不需要每次釋放,因為每次load時是覆蓋以前的記憶體區域。psrcimgcopy同樣。

不過在程式結束時要釋放,以免產生記憶體洩露或者別人以為你忘了。

cvreleaseimage(&psrcimgcopy );

psrcimg.destroy();

不過要正確釋放psrcimgcopy時,宣告時必須create下:

psrcimgcopy =cvcreateimage(cvsize(imgwidht,imgheight),ipl_depth_8u, 3);

//imgwidht,imgheight為影象寬和高。

Opencv中cvFindContours函式解析

cvfindcontours 2013 01 17 13 26 44 分類 c c int nc cvfindcontours rawimage,storage,first contour,sizeof cvcontour cv retr list nc返回值為,檢測出來的輪廓個數。cv retr ...

OpenCV學習 OpenCV中的工具函式

opencv庫中還提供了一些專用功能,可以更好的處理計算機視覺中普遍出現的數學和其他問題。在庫的環境中它們被稱為工具函式。工具函式包含數學操作 測試 錯誤生成 記憶體與執行緒處理 優化及其他的工具。函式名稱 描述cv alignptr 對齊指標到給定位元組數 cv alignsize 將緩衝區大小給...

opencv中的findContours的使用

1.findcontours對0包圍1的情況,會找出1來。例如 0,0,0 0,1,0 0,0,0 找出來的contour是1,1.2.findcontours對1包圍0的情況,會找出0周圍的點來。1,1,1 1,0,1 1,1,1 找出來的contour是1,0 2,1 1,2 0,1 3.fin...