0

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

谢谢 :)

4

1 回答 1

2

在 opencv 中,如果你创建一个IplImage*withcvCreateImage你不应该用delete. 尝试:

cvReleaseImage( &cvImage );

因为 IplImage* 来自 C-api,所以您应该按照建议释放它们。你必须做&cvImage。您可以从文档中看到:http ://docs.opencv.org/modules/core/doc/old_basic_structures.html?highlight=cvreleaseimage#releaseimage

于 2013-07-29T15:12:20.203 回答