2013-07-30 3 views
0

У меня ошибка с ошибкой кучи из-за функции cv :: findContours. Мне нужна помощь в определении решения этой проблемы.Ошибка кучи кучи в findContours

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

Я использую opencv 2.4.5 с visual studio 2010. Как я копаю, я чувствую, что проблема заключается в удалении вектора контуров. – amoghesturi

+0

Я вижу ту же проблему и пришел к такому же выводу: ошибка вызвана вектором, который я передал при выходе из области видимости. Использование Visual Studio 2015 и OpenCV 2.4. Может быть, это специфично для Windows-сборки? И вы нашли решение? –

ответ

0

Вы оцениваете количество найденных контуров. Я думаю, что вы получаете ошибку, когда нет контуров в переменной контуров.