我想将一个IplImage转换为cv::Mat,除尝试删除原始缓冲区时的一点段错误外,所有工作都可以,我将复制标志设置为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) ;
也许我误解了复制的东西,并且只能删除tge cvImage-> data,而不是整个对象?
谢谢 :)
最佳答案
在opencv中,如果使用IplImage*
创建cvCreateImage
,则不应使用delete
释放它。尝试:
cvReleaseImage( &cvImage );
因为IplImage *来自C-api,所以您应该按照建议释放它们。您必须执行
&cvImage
。您可以从文档中看到:http://docs.opencv.org/modules/core/doc/old_basic_structures.html?highlight=cvreleaseimage#releaseimage