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...