2016-05-29 10 views
0

IplImageに割り当てられたメモリを解放する際に問題があります。 ちょうど iOS - OpenCV 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 
} 

答えて

0

あなたが参照(cv::Mat&)として画像に渡しているので、このメソッドの外で何かが静止画に握っている可能性があります。

値で渡してみて、クラッシュがまだ発生していないか確認してください。

関連する問題