OpenCV Mat IplImage混用時出現內存出錯可能原因及解決辦法
在使用OpenCV編程時,由於輪廓提取函數在vs2010不兼容,我不得不使用 Mat IplImage混用,在運行函數結束時出現了內存問題。
我在混用時將Mat 和 IplImage互相轉換進行深拷貝時,會用到多次IplImage*,爲了防止內存溢出,我加入了release。本以爲釋放後效果會更好,結果出現了內存問題。
//Mat轉IplImage
Mat A;
IplImage *B = &IplImage(A);
//深拷貝只要再加一次複製數據:
IplImage *C= cvCloneImage(B);
多次嘗試發現,當我release了從Mat淺拷貝出來的IplImage時,會導致函數結束後,Mat自行解構的時候找不到內存位置而報錯。
解決方法:不要釋放淺拷貝製作出來的IplImage,可以釋放深拷貝的IplImage
//cvReleaseImage( &B );
cvReleaseImage( &C );