iOS - OpenCV 释放 IplImage 崩溃
iOS - OpenCV Releasing IplImage crash
我在释放为 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
}
您将图像作为参考传入 (cv::Mat&)
,因此此方法之外的某些内容可能仍在保留图像。
能否尝试按值传入,看看是否仍然发生崩溃?
我在释放为 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
}
您将图像作为参考传入 (cv::Mat&)
,因此此方法之外的某些内容可能仍在保留图像。
能否尝试按值传入,看看是否仍然发生崩溃?