opencv模板匹配函数matchtemplate详解

OpenCV是一个流行的计算机视觉库,提供了许多图像处理和计算机视觉算法。其中之一是模板匹配,它可以在图像中查找特定的模式。在本攻略中,我们将介绍OpenCV中的模板匹配函数matchTemplate的细信息。

matchTemplate函数

matchTemplate函数是OpenCV中用于模板匹配的函数。它采用两个参数:源图像和模板像,并返回一个匹配结果图像。该函数将模板图像在源图像中滑动,并计算每个位置的匹配程度。匹配程度越高,结果图像中的像素值越大。

cv2.matchTemplate(image, templ, method[, result[, mask]])

其中,参数说明如下:

  • image:源图像
  • templ:模板图像
  • method:匹配方法,包括cv2.TM_SQDIFF、cv2.TM_SQDIFF_NORMED、cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_CEFF、cv2.TM_CEFF_NORMED
  • result:匹配结果图像
  • mask:掩码图像

示例1:基本模板匹配

import cv2
import numpy as np

# 读取源图像和模板图像
img = cv2.imread('source.jpg')
template = cv2.imread('template.jpg')

# 获取模板图像的宽度和度
w, h = template.shape[:-1]

# 使用cv2.TM_CCOEFF_NORMED方法进行模板匹配
result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)

# 获取匹配结果中最大值的位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

# 在源图像中绘制矩形框
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)

# 显示结果图像
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这在源图像中查找模板图像,并在匹配位置绘制矩形框。

示例2:使用掩码进行模板匹配

import cv2
import numpy as np

# 读取源图像和模板图像
img = cv2.imread('.jpg')
template = cv2.imread('template.jpg')

# 创建掩码图
mask = np.zeros(img.shape[:-1], dtype=np.uint8)
mask[100:300, 100:300] = 255

# 使用cv2.TM_CCO_NORMED方法进行模板匹配
result = cv2.matchTemplate(img, template, cv2.TM_CCOEFFORMED, mask=mask)

# 获取匹配结果中最大值的位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

# 在源图像中绘制矩形框
top_left = max_locbottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)

# 显示结果图像
cv2.imshow('result img)
cv2.waitKey()
cv2.destroyAllWindows()

这将在源图像中查找模板图像,并在指定区域内进行匹配。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:opencv模板匹配函数matchtemplate详解 - Python技术站

(0)
上一篇 2023年5月7日
下一篇 2023年5月7日

相关文章

  • Ajax实现异步用户名验证功能

    实现异步用户名验证功能可以提高网站的用户体验,减少用户等待时间和提高网站流量。下面是实现该功能的攻略: 步骤一:新建HTML文件 新建HTML文件,包含一个用户名输入框和一个用于显示验证结果的信息框。HTML代码如下: <!DOCTYPE html> <html> <head> <meta charset=&quot…

    other 2023年6月27日
    00
  • 批处理BAT脚本中set命令的使用详解(批处理之家Batcher)

    批处理BAT脚本中set命令的使用详解 在批处理BAT脚本中,set命令是一个非常有用的命令,用于设置和显示环境变量。它可以用于存储和检索各种类型的数据,包括字符串、数字和文件路径等。本攻略将详细介绍set命令的使用方法和示例。 设置环境变量 set命令可以用于设置环境变量,语法如下: set 变量名=值 其中,变量名是要设置的环境变量的名称,值是要为该环境…

    other 2023年8月15日
    00
  • 在ASP.NET 2.0中操作数据之四十九:为GridView控件添加RadioButton

    在ASP.NET 2.0中,我们可以在GridView控件中添加RadioButton。下面是详细的步骤: 步骤一:将RadioButton控件添加到GridView模板列中 首先,在GridView的模板列中添加RadioButton控件。这可以通过以下步骤实现: 打开GridView的设计视图。 单击GridView的“Edit Columns”链接。 …

    other 2023年6月27日
    00
  • nginx could not build the server_names_hash 解决方法

    当我们在使用nginx作为web服务器时,可能会出现类似“nginx could not build the server_names_hash”的错误提示。这个错误通常是由于nginx中定义的server name太多,超出了默认的hash bucket size所致。 要解决这个问题,我们需要改变nginx配置中的server_names_hash_ma…

    other 2023年6月27日
    00
  • 尝试写一写4gl与4fd

    尝试写一写4GL与4FD 前言 4GL和4FD是两种不同的编程语言,它们分别用于不同的领域。在本文中,我将简要介绍4GL和4FD的概念,语法和使用场景。 什么是4GL和4FD 4GL,全称Fourth Generation Language,也称为高级语言,是一种描述性语言。常用于数据管理和业务逻辑处理。 4FD,全称Fourth Generation De…

    其他 2023年3月28日
    00
  • 微信小程序之自定义组件的实现代码(附源码)

    接下来我将为大家详细介绍微信小程序中自定义组件的实现代码,并附上代码示例。 自定义组件的概述 什么是组件? 组件是由一些可复用的元素的集合,可以看成是一个包含了一些定义、样式、行为的模块。 什么是自定义组件? 组件可以分为两类:原生组件和自定义组件。我们通常所说的组件,指的是自定义组件。 自定义组件的优点 可以复用性强,可以在多个页面中使用。 可以自定义组件…

    other 2023年6月25日
    00
  • Android获取周围WIFI热点服务

    Android获取周围WIFI热点服务攻略 步骤1:添加权限 首先,在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" /> <uses-permission andro…

    other 2023年9月7日
    00
  • Oracle数据库表的备份和数据表的删除操作

    Oracle数据库表的备份和数据表的删除操作 在数据库管理中,备份和删除数据表是经常使用到的操作。以下是介绍在Oracle数据库中如何实现表的备份和删除。 数据表备份 1. 导出数据表 在Oracle数据库中,我们可以使用exp命令将表导出到本地文件系统。 使用以下命令导出mytable表: exp username/password file=mytabl…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部