使用matchTemplate解释结果

时间:2014-11-21 02:08:39

标签: java opencv matchtemplate

我正在尝试使用以下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。

我在做错了什么?图像是黑白的。

1 个答案:

答案 0 :(得分:0)

完美匹配应显示为.99999999

如果你得到一个1.0,你要么正常化后的值(它看起来不像你)

或其他正在发生的事情。

您可能希望确保尺寸正确(搜索模板,结果矩阵等)

我真的不认为你应该得到一个1.0,因为我已经用完美的匹配测试了这个,我的结果是.9999 .....