2016-05-29 13 views
0

Ich habe ein Problem beim Freigeben von Speicher für ein IplImage. Gerade cvReleaseImageiOS - OpenCV Freigabe IplImage Absturz

cvReleaseImage(&dilateImage); 

-Code Abstürze an der Linie verwenden, wo ich "dilateImage" befreien.

Irgendwelche Vorschläge bitte?

Thanks :)

- (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 
} 

Antwort

0

Sie sind als Referenz (cv::Mat&) in dem Bild vorbei, so ist es möglich, dass etwas außerhalb dieses Verfahren noch mit dem Bild auf hält.

Können Sie versuchen, es nach Wert zu übergeben und zu sehen, ob der Absturz immer noch auftritt?