0

我试图用 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 错误:断言失败

我在这里有点黑暗。任何帮助将不胜感激。

非常感谢。

4

2 回答 2

2

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

matchShapes(contours[0], contourstwo[0], CV_CONTOURS_MATCH_I3, 0);
于 2012-02-27T05:21:30.717 回答
0

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

于 2013-07-16T14:58:49.710 回答