0

matchShapesメソッドを使用して2つの輪郭を一致させようとしていますが、常にアサーションが失敗します。これは間違ったマットフォーマットと関係があるはずですが、私はそれを解決できないようです。

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> >findContoursmatchShapes

于 2013-07-16T14:58:49.710 に答える