OpenCV ||утверждение matchShapes findContours не удалось - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь сопоставить два контура с помощью метода matchShapes, но мне всегда не удается подтвердить.Я знаю, что это как-то связано с неправильным форматом Mat, но я не могу решить его.

findContours работает очень хорошо:

vector<vector<cv::Point> > contours;
cv::findContours(incomingimage,
                 contours, 
                 CV_RETR_EXTERNAL, 
                 CV_CHAIN_APPROX_SIMPLE);

vector<vector<cv::Point> > contourstwo;
cv::findContours(incomingimagetwo,
                 contourstwo, 
                 CV_RETR_EXTERNAL, 
                 CV_CHAIN_APPROX_SIMPLE);

Я получаюхороший вывод этих методов, но затем

matchShapes(Mat(contours), Mat(contourstwo), CV_CONTOURS_MATCH_I3, 0);

возвращает

Ошибка OpenCV: подтверждение не выполнено

Я немного не в курсе.Любая помощь будет принята с благодарностью.

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Я также новичок в openCV, но я просто выясняю, как решить эту проблему сегодня (после многих проб и ошибок). Пожалуйста, попробуйте это

matchShapes(contours[0], contourstwo[0], CV_CONTOURS_MATCH_I3, 0);
0 голосов
/ 16 июля 2013

Вход в matchShapes согласно документации должен иметь тип vector<Point>, а не vector<vector<Point> >, как вывод findContours, просто переберите каждый контур и передайте его matchShapes.

...