0

次の matchTemplate コードを使用して 2 つの画像を一致させようとしています。

                int match_method = Imgproc.TM_CCOEFF_NORMED;
                int result_colsAB = matB.cols() - matA.cols() + 1;
                int result_rowsAB = matB.rows() - matA.rows() + 1;


                Mat resultAB = new Mat(result_rowsAB, result_colsAB, CvType.CV_8UC1);


                Imgproc.matchTemplate(matA, matB, resultAB,match_method);

                //Core.normalize(resultAB, resultAB, 0.0, 1.0, Core.NORM_MINMAX, -1, new Mat());
                 MinMaxLocResult mmr = Core.minMaxLoc(resultAB);
                System.out.println( mmr.maxVal);

期待どおりに2つの塗りつぶされた円を比較すると、期待される.99が得られます

しかし、ほぼ同じサイズの塗りつぶされた円と塗りつぶされた正方形を比較すると、1.0 になります。

私は何を間違っていますか?画像は白黒です。

4

1 に答える 1

0

完全一致は .99999999 と表示されます。

1.0 を取得している場合は、その後の値を正規化しています (それはあなたのようには見えません)。

または何か他のことが起こっています。

サイズが正しいことを確認することをお勧めします (検索テンプレート、結果マトリックスなど)。

私はこれを完全に一致させて自分でテストし、結果が.9999だったので、1.0が返されるはずはないと本当に思います.....

于 2015-02-20T15:31:58.170 に答える