2013-07-29 220 views
0

時OpenCV的cvarrtoMat段錯誤,我想一個是IplImage試圖刪除原來的緩衝區時轉換爲CV ::墊,所有的工作只是一個小內存設計缺陷,我因子評分設置複製標誌爲true ...刪除原始緩衝區

我敢肯定,我做錯了什麼,但我不搞清楚......

這裏是我做的:

IplImage* cvImage = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3) ; 

{... fill cvImage data by mcopy from a blob ...} 

cv::Mat mat = cv::cvarrToMat(cvImage, true) ; 

if (cvImage) 
    delete (cvImage) ; 

也許我misanderstood複製的東西,只有TGE cvImage - >數據可以被刪除,而不是整個對象?

謝謝:)

回答

2
OpenCV中

如果創建一個cvCreateImageIplImage*不應該delete釋放它。嘗試:

cvReleaseImage(&cvImage); 

因爲IplImage *是從C-api你應該釋放他們的建議。你必須做&cvImage。你可以從文檔中看到:http://docs.opencv.org/modules/core/doc/old_basic_structures.html?highlight=cvreleaseimage#releaseimage

+0

Ooh ok:o我搜索了一個cvDelete,並且我看起來不太好,所以我錯過了cvRelease,我的錯誤。非常感謝 ! – drkzs