什么是OpenCV模板匹配Max Min值范围?需要用作theshold / c / java

我正在使用模板匹配创建一个简单的openCV应用程序,我需要比较在大图像中查找小图像并返回结果为true(如果匹配找到)或false(未找到匹配项).
Imgproc.matchTemplate(largeImage,smallImage,result,matchMethod);
    Core.normalize(result,1,Core.norM_MINMAX,-1,new Mat());

    MinMaxLocResult mmr = Core.minMaxLoc(result);

    double minMaxValue = 1;
    if (matchMethod== Imgproc.TM_SQDIFF || matchMethod== Imgproc.TM_SQDIFF_norMED)
    {
        minMaxValue = mmr.minVal;
        useMinThreshold = true;
    }
    else
    {
        minMaxValue = mmr.maxVal;
    }

现在的问题是使用这个minMaxValue做出决定(真/假).我知道上面两种方法TM_SQDIFF和TM_SQDIFF_norMED返回低值,而其他方法返回高值,所以我可以有2个不同的阈值并比较一个阈值(取决于模板方法类型).

因此,如果有人可以解释MinMaxLocResult返回的minVal和maxVal范围是多么好.

它是0到1范围?

如果是,对于Max类型模板方法,值1是否完美匹配?

解决方法

MinMaxLocResult不返回minVal和maxVal范围. minVal和maxVal只是最小和最大匹配分数,可以在 link中看到.

结构MinMaxLocResult还有minLoc和maxLoc属性,它们是Point类型,给出匹配的位置.鉴于您使用TM_SQDIFF或TM_SQDIFF_norMED作为匹配条件,最佳匹配位置将为mmr.minLoc.

为了设置检测阈值,您可以声明一个variabledouble thresholdMatch并通过实验设置其值.如果minVal< thresholdMatch然后可以说检测到目标对象

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...