2012-02-20 2 views
0

J'essaie de faire correspondre deux contours avec la méthode matchShapes mais l'assertion a toujours échoué. Je sais que cela doit avoir quelque chose à voir avec le mauvais format Mat, mais je n'arrive pas à le résoudre.OpenCV || L'assertion matchShapes findContours a échoué

Les findContours fonctionne très bien:

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); 

Je reçois une bonne sortie de ces méthodes mais

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

retours

OpenCV Erreur: Assertion a échoué

Je suis un peu dans le noir ici. Toute aide serait grandement appréciée.

Merci beaucoup.

+0

Je dois également mettre en œuvre le même travail mais je ne sais pas grand chose sur opencv.Pouvez-vous s'il vous plaît fournir le code que vous avez mis en œuvre pour cette fonctionnalité. – Gypsa

Répondre

2

Je suis également débutant à openCV, mais je viens de comprendre comment résoudre ce problème aujourd'hui (après de nombreux essais et erreurs). S'il vous plaît essayer celui-ci

matchShapes(contours[0], contourstwo[0], CV_CONTOURS_MATCH_I3, 0); 
0

L'entrée à matchShapes selon la documentation devrait être du type vector<Point> et non vector<vector<Point> >, comme la sortie de findContours, juste itérer sur chaque contour et le transmettre à matchShapes.

Questions connexes