iOS - OpenCV释放IplImage崩溃

时间:2016-05-29 07:56:40

标签: ios objective-c opencv iplimage

我在释放为IplImage分配的内存时遇到了问题。 只需使用cvReleaseImage

cvReleaseImage(&dilateImage);

代码在我释放“dilateImage”的行崩溃。

有什么建议吗?

感谢:)

- (void)processImage:(cv::Mat&)image;
{
   cv::Mat grayImage;
   cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);

   Canny(grayImage, grayImage, 66.0, 133.0, 3);
   cv::adaptiveThreshold( grayImage, grayImage, 255,cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 11, 2 );

   IplImage img = IplImage(grayImage);
   IplImage* dilateImage = cvCloneImage(&img);

   IplConvKernel* kernal = cvCreateStructuringElementEx(3,1, 1, 0, CV_SHAPE_RECT);
   cvDilate(dilateImage, dilateImage, kernal, 2);
   cvErode(dilateImage, dilateImage, kernal, 4);
   cvDilate(dilateImage, dilateImage, kernal, 2);
   kernal = cvCreateStructuringElementEx(1, 3, 0, 1, CV_SHAPE_RECT);
   cvErode(dilateImage, dilateImage, kernal, 1);
   cvDilate(dilateImage, dilateImage, kernal, 2);

   image = cv::cvarrToMat(dilateImage);
   cvReleaseImage(&dilateImage);//<~Crash
}

1 个答案:

答案 0 :(得分:0)

您将图像作为参考(cv::Mat&)传入,因此此方法之外的某些内容可能仍然保留在图像上。

您是否可以尝试按值传递,并查看崩溃是否仍然发生?