如何避免匹配模板中的错误匹配

How to avoid false matches in match template

如果 matchTemplate 找到匹配项,结果将在其周围显示一个矩形。但是如果 MatchTemplate 没有找到准确的结果怎么办? 如何处理最小最大值?

示例查询图像:

相关代码片段:

 if ((minValues[0] >= 0.95) || (minValues[0] <= 0.3))
            //if ((maxValues[0] >= 0.95))
            {
                Rectangle rect = new Rectangle(new Point(minLocations[0].X, minLocations[0].Y), new Size(imgTemplate.Width, imgTemplate.Height));
                imgSource.Draw(rect, new Bgr(0, 0, 255), 1);
                isFoundMatch = true;
                ImageViewer.Show(imgSource);
                if (isFoundMatch == true)
                {
                    imgSource.Save("C:/Misc/MatchFound/warning.png");
                }
            }

编辑:我检查了图像中不存在的模板。但是它给出了错误的匹配。

首先,您需要查看您认为有效的实例和您认为无效的实例的分数。

如果您看到它们之间有明显的区别,那么您可以为分数值设置一个阈值。但是,如果范围之间存在一些重叠,则单独的匹配分数不足以区分。然后你需要找出额外的标准来区分真假阳性。这些将取决于模式的类型和出现的混淆类型。很难给出一般规则。