2013-07-29 56 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