OpenCV || matchShapes findContours断言失败

时间:2012-02-20 21:07:53

标签: opencv pattern-matching shapes contour

我试图用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 个答案:

答案 0 :(得分:2)

我也是openCV的初学者,但我今天才弄清楚如何解决这个问题 (经过多次试验和错误)。 请试试这个

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

答案 1 :(得分:0)

根据文档,matchShapes的输入应该是vector<Point>而不是vector<vector<Point> >类型,findContours的输出,只是迭代每个轮廓和将其传递给matchShapes