作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用模板匹配创建一个简单的 openCV 应用程序,我需要比较在大图像中找到小图像并将结果返回为 true(如果找到匹配项)或 false(未找到匹配项)。
Imgproc.matchTemplate(largeImage, smallImage, result, matchMethod);
Core.normalize(result, result, 0, 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
。
为了设置检测阈值,您可以声明一个变量double thresholdMatch
并实验性地设置它的值。如果 minVal < thresholdMatch 则可以说检测到目标对象
关于java - OpenCV 模板匹配 Max Min 取值范围是多少?需要作为theshold/c++/java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17784800/
我是一名优秀的程序员,十分优秀!