2013-07-30 1 views
0

cv :: findContours 함수로 인해 힙 손상 오류가 발생했습니다. 이 문제에 대한 해결책을 찾는 데 도움이 필요합니다.findContours의 Heap Curroption 오류

int GetEndPoints(cv::Mat image) 
{ 
    cv::Mat imgBW = cv::Mat::zeros(image.rows, image.cols, CV_8UC1); 
    cv::cvtColor(image, imgBW, CV_BGR2GRAY); 

    std::cout << std::endl << imgBW.channels(); 
    cv::threshold(imgBW, imgBW, 150, 255, cv::THRESH_BINARY); 
    cv::namedWindow("image", 0); 
    cv::imshow("image", imgBW); 
    std::vector<std::vector<cv::Point>> contours; 
    cv::Mat image1 = image.clone(); 


    // Find the Contours 
    std::cout << std::endl << imgBW.channels(); 
    cv::findContours(imgBW, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); 
    cv::drawContours(image1, contours, -1, cv::Scalar(255, 0, 0), 2, 8); 
    cv::namedWindow("contours", 0); 
    cv::imshow("contours", image1); 
    cv::waitKey(); 

    return 0; 
} 
+0

g ++ 4.7.2 및 opencv 2.3.1을 사용하여 프로그램을 시험해 보았습니다. 힙 손상에 대한 메시지를받지 못했습니다. 나는 또한 valgrind를 통해 그것을 실행하고 오류가 없습니다. –

+0

visual studio 2010에서 opencv 2.4.5를 사용하고 있습니다. 파고 들어감에 따라 윤곽선 벡터를 삭제하는 중에 문제가 있다고 생각합니다. – amoghesturi

+0

동일한 문제가 발생하여 같은 결론에 도달했습니다. 오류는 범위를 벗어난 통과 된 벡터 때문에 발생합니다. Visual Studio 2015 및 OpenCV 2.4 사용. 어쩌면 윈도우즈 빌드에 특화된 것일까? 그리고 해결책을 찾았습니까? –

답변

0

발견 한 윤곽 수를 확인하십시오. 윤곽선 변수에 윤곽선이없는 경우 오류가 발생한다고 생각합니다.