我想将IplImage转换为cv :: Mat,在尝试删除原始缓冲区时除了一点segfault之外的所有工作,我将复制标志设置为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->数据可以删除,而不是整个对象?
谢谢:)
答案 0 :(得分:2)
IplImage*
创建cvCreateImage
,则在opencv中,您不应该使用delete
释放它。尝试:
cvReleaseImage( &cvImage );
因为IplImage *来自C-api,所以你应该按照建议释放它们。你必须&cvImage
。您可以从文档中看到:http://docs.opencv.org/modules/core/doc/old_basic_structures.html?highlight=cvreleaseimage#releaseimage