删除原始缓冲区时opencv cvarrtoMat segfault

时间:2013-07-29 15:07:11

标签: opencv

我想将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->数据可以删除,而不是整个对象?

谢谢:)

1 个答案:

答案 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