OpenCV模板匹配

2025年3月17日 | 阅读 3 分钟

模板匹配是一种用于在较大图像中查找模板图像位置的技术。 OpenCV为此目的提供了 cv2.matchTemplates() 函数。 它简单地将模板图像滑过输入图像,并比较模板和输入图像下的补丁。

有多种比较方法可用; 我们将在后续主题中讨论一些流行的方法。

它返回一个灰度图像,其中每个像素代表该像素的邻域与输入模板的匹配程度。

OpenCV 中的模板匹配

模板匹配包括以下步骤

步骤 1: 获取实际图像并将其转换为灰度图像。

步骤 2: 选择模板作为灰度图像。

步骤 3: 找到精度级别匹配的位置。 这是通过模板图像在实际图像上滑动来完成的。

步骤 4: 当结果大于精度级别时,将该位置标记为已检测到。

请看以下示例

输出

OpenCV Template Matching

具有多个对象的模板匹配

在上面的示例中,我们搜索图像以查找在该图像中仅出现一次的模板图像。 假设一个特定的对象在特定图像中出现多次。 在这种情况下,我们将使用阈值处理,因为 cv2.minMaxLoc() 不会给出模板图像的所有位置。 考虑以下示例。

输出

OpenCV Template Matching

在上面的程序中,我们以流行的超级马里奥游戏图像作为主图像,以硬币图像作为模板图像。 硬币在主图像中出现多次。 当它在图像中找到硬币时,它会在硬币上绘制矩形。

模板匹配的局限性

模板匹配有以下几个局限性

  • 对于中型到大型图像,计算模式相关图像是一个耗时的过程。
  • 模式的出现必须保留参考模板图像的方向。
  • 模板匹配不适用于模板的旋转或缩放版本,因为形状/大小/剪切等发生了变化。

下一个主题OpenCV 腐蚀与膨胀