OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
模板匹配

目标

理论

模板匹配是一种在较大图像中搜索和查找模板图像位置的方法。 OpenCV 提供了一个函数 cv.matchTemplate() 用于此目的。 它简单地将模板图像在输入图像上滑动(如在 2D 卷积中),并比较模板图像下的模板和输入图像的补丁。 OpenCV 中实现了几种比较方法。(您可以查看文档以获取更多详细信息)。 它返回一个灰度图像,其中每个像素表示该像素的邻域与模板的匹配程度。

如果输入图像的大小为 (WxH),模板图像的大小为 (wxh),则输出图像的大小为 (W-w+1, H-h+1)。 获得结果后,您可以使用 cv.minMaxLoc() 函数来查找最大/最小值的位置。 将其作为矩形的左上角,并将 (w,h) 作为矩形的宽度和高度。 该矩形就是您的模板区域。

注意
如果您使用 cv.TM_SQDIFF 作为比较方法,最小值给出最佳匹配。

OpenCV 中的模板匹配

我们使用以下函数:cv.matchTemplate (image, templ, result, method, mask = new cv.Mat())

参数
image搜索运行的图像。 它必须是 8 位或 32 位浮点型。
templ被搜索的模板。 它必须不大于源图像并且具有相同的数据类型。
result比较结果的映射。 它必须是单通道 32 位浮点型。
方法指定比较方法的参数(参见 cv.TemplateMatchModes)。
mask被搜索模板的掩码。 它必须具有与 templ 相同的数据类型和大小。 默认情况下未设置。

尝试一下