我试图用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错误:断言失败
我在这里有点黑暗。 任何帮助都将受到高度赞赏。
非常感谢。
答案 0 :(得分:2)
我也是openCV的初学者,但我今天才弄清楚如何解决这个问题 (经过多次试验和错误)。 请试试这个
matchShapes(contours[0], contourstwo[0], CV_CONTOURS_MATCH_I3, 0);
答案 1 :(得分:0)
根据文档,matchShapes
的输入应该是vector<Point>
而不是vector<vector<Point> >
类型,findContours
的输出,只是迭代每个轮廓和将其传递给matchShapes
。