OpenCV 模板匹配

article/2025/11/9 18:43:04

模板匹配就是在大图中找小图,也就说在一幅图像中寻找另一幅模板图像的位置。

案例来源于傅老师。

模板匹配的操作方法是将模板图像B在图像A上滑动,遍历所有像素以完成匹配。

工作原理:在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。

局限性: 它只能进行平行移动,若原图像中的匹配目标发 生旋转或大小变化,该算法无效。

模板匹配是使用函数cv2.matchTemplate实现的,具体为:

result = cv2.matchTemplate(image, template,method)

Result:运行结果

Image:待处理图像

Template:模板图像

Method:要采取的方法

method:匹配方法,有以下6种

差值平方和匹配CV_TM_SQDIFF
标准化差值平方和匹配CV_TM_SQDIFF_NORMED
相关匹配CV_TM_CCORR
标准相关匹配CV_TM_CCORR_NORMED
相关系数匹配CV_TM_CCOEFF
标准相关系数匹配CV_TM_CCOEFF_NORMED

查找最值(极值)与最值所在的位置,可以使用cv2.minMaxLoc函数实现,具体为:

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(src)

import cv2
import numpy as np
#Matplotlib是RGB
import matplotlib.pyplot as plt
%matplotlib inline #定义显示图片的函数,避免重复代码
def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey()cv2.destroyAllWindows()
#读取模板图片
template = cv2.imread("yinhua.png")
# cv_show("template",template)
img = cv2.imread("yinhua2.png")
# cv_show("img", img)
#获取到我们模板的大小h,w
h, w = template.shape[:2]
#开始模板匹配过程(采用计算归一化平方不同,计算值越接近0,越相关)
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
#画出检测到的部分
imgcpy = img.copy()
cv2.rectangle(imgcpy, top_left, bottom_right, 255, 2)
#因为matplotlib显示为RGB图像,做一次色彩空间空间转换
imgcpy = cv2.cvtColor(imgcpy, cv2.COLOR_BGR2RGB)
plt.imshow(imgcpy, cmap='gray')
plt.show()

实践:检测多个印花

函数cv2.minMaxLoc()只能够找出最值,无法给出所有匹配区域的位置信息。所以,要想匹配多个结果,使用函数cv2.minMaxLoc()是无法实现的,需要利用阈值进行处理。

#读取模板图片
template = cv2.imread("yinhua.png")
# cv_show("template",template)
img = cv2.imread("yinhua2.png")
#获取到我们模板的大小h,w
h, w = template.shape[:2]
#开始模板匹配过程(采用计算归一化平方不同,计算值越接近0,越相关)
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF_NORMED)
threshold = 0.01
loc = np.where(res<=threshold)
for pt in zip(*loc[::-1]):cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), 255, 1)
#因为matplotlib显示为RGB图像,做一次色彩空间空间转换
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img, cmap='gray')


http://chatgpt.dhexx.cn/article/iafQckj4.shtml

相关文章

13 -- OpenCV学习—模板匹配

模板匹配 1.模板匹配 模板匹配&#xff1a;在给定的模板中查找最相似的区域 实现流程&#xff1a; 准备两幅图像 &#xff08;1&#xff09;原图 &#xff08;2&#xff09;模板图滑动模板块和原图像进行比对对于每个像素位置。将计算结果存在矩阵中&#xff0c;输入图像大小…

opencv模板匹配步骤及Code

opencv模板匹配步骤及Code 首先介绍一下模板匹配的适用场景&#xff1a; 1、图像检索 2、目标跟踪 简单的说&#xff0c;模板匹配最主要的功能就是在一幅图像中去寻找和另一幅模板图像中相似度最高的部分&#xff0c;这就是模板匹配。 比如&#xff0c;在下面这图片中: 我们要…

OpenCV 学习笔记(模板匹配)

OpenCV 学习笔记&#xff08;模板匹配&#xff09; 模板匹配是在一幅图像中寻找一个特定目标的方法之一。这种方法的原理非常简单&#xff0c;遍历图像中的每一个可能的位置&#xff0c;比较各处与模板是否“相似”&#xff0c;当相似度足够高时&#xff0c;就认为找到了我们的…

OpenCV-模板匹配 单个对象匹配、多个对象匹配

目录 概念步骤单个对象匹配代码实现一代码实现二 多个对象匹配代码实现 概念 模板匹配与剪辑原理很像&#xff0c;模板在原图像上从原点开始浮动&#xff0c;计算模板&#xff08;图像被模板覆盖的地方&#xff09;的差别程度&#xff0c;这个差别程度的计算方法在opencv里有六…

openCV——模板匹配

单模板匹配 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cvshow(name, ndarray):img cv2.imshow(name, ndarray)cv2.waitKey(0)cv2.destroyAllWindows()模板匹配是指在当前图像 A 内寻找…

Python+Opencv实现模板匹配

目录 一、模板匹配简介二、传统模板匹配算法不足之处三、多尺度模板匹配实现步骤四、多尺度模板匹配实现代码五、多尺度模板匹配效果展示和分析六、思维扩展参考资料注意事项 一、模板匹配简介 所谓的模板匹配&#xff0c;即在给定的图片中查找和模板最相似的区域&#xff0c;该…

OpenCV数字图像处理实战二:模板匹配(C++)

OpenCV数字图像处理实战二&#xff1a;模板匹配&#xff08;C&#xff09; 1、模板匹配原理 模板匹配&#xff08;TemplateMatching&#xff09;就是在一幅图像中寻找和模板图像&#xff08;template&#xff09;最相似的区域&#xff0c;模板匹配不是基于直方图的&#xff0…

opencv 模板匹配形状匹配

文章目录 1. 找圆垫子1.1 得到模板1.2 形状匹配 2. 找瓜子 这是第四次作业要求 所以今天就趁机会讲讲模板匹配&#xff0c;正好之前的项目有一部分重要工作就是和模板匹配紧密相关&#xff0c;对于今天作业来说&#xff0c;之前的项目难度更大&#xff0c;因为涉及到许多要考虑…

Opencv——图像模板匹配

引言 什么是模板匹配呢&#xff1f; 看到这里大家是否会觉得很熟悉的感觉涌上心头&#xff01;在人脸识别是不是也会看见 等等。 模板匹配可以看作是对象检测的一种非常基本的形式。使用模板匹配&#xff0c;我们可以使用包含要检测对象的“模板”来检测输入图像中的对象。 …

OpenCV-模板匹配cv::matchTemplate

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 函数原型 void matchTemplate( InputArray image, InputArray templ,OutputArray result, int method, InputArray mask noArr…

OPENCV多种模板匹配使用对比

前文简单提到模板匹配中的一种&#xff1a;NCC多角度模板匹配&#xff0c;博主结合实际的检测项目&#xff08;已落地&#xff09;发现其准确率和稳定性有待提升&#xff0c;特别是一些复杂背景的图形&#xff0c;又或是模板选取不当都会造成不理想的效果&#xff1b;同时也借鉴…

基于opencv的模板匹配详解

1.什么是模板匹配 在OpenCV教程中这样解释模板匹配&#xff1a; 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。这里说的模板是我们已知的小图像&#xff0c;模板匹配就是在一副大图像中搜寻目标。模板就是我们已知的在图中要找的目标&#xff0c;…

OpenCV模板匹配(cv2.matchTemplate)

目录 摘要正文OpenCV模板匹配&#xff08;cv2.matchTemplate&#xff09;什么是模板匹配&#xff1f;OpenCV的 “cv2.matchTemplate” 函数配置开发环境项目结构使用OpenCV实施模板匹配OpenCV模板匹配结果总结 摘要 在本教程中&#xff0c;您将学习如何使用OpenCV和cv2.matchTe…

Opencv (C++)系列学习---模板匹配

目录 1.模板匹配的定义 2.API介绍 3.寻找最优匹配位置&#xff08;匹配后的配套操作&#xff09; 4.具体代码 1.模板匹配的定义 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域&#xff0c;该匹配方法并不是基于直方图&#xff0c;而是使用一个图像块在输入图像…

【OpenCV--模板匹配】

目录 一、模板匹配 1.定义&#xff1a; 2.实现&#xff1a; 二、霍夫线检测 1.原理&#xff1a; 2.实现&#xff1a; 三、霍夫圆检测 1.描述&#xff1a; 2.用法&#xff1a; 一、模板匹配 1.定义&#xff1a; 模板匹配就是在给定的图片中&#xff0c;查找和模板最相似的区域…

OpenCV学习笔记(十一)——模板匹配

模板匹配是指在当前图像A内寻找与图像B最相似的部分&#xff0c;一般将图像A称为输入图像&#xff0c;将图像B称为模板图像。模板匹配的操作方法是将模板图像B在图像A上滑动&#xff0c;遍历所有像素以完成匹配。 OpenCV学习笔记(十一&#xff09; 1. 模板匹配基础2. 多模板匹配…

opencv中的模板匹配

1 匹配函数 opencv 提供了一个专门用于模板匹配的函数 cv::matchTemplate();其调用方式如下&#xff1a; void cv::matchTemplate(cv::InputArray image, // 用于搜索的输入图像, 8U 或 32F, 大小 W-Hcv::InputArray templ, // 用于匹配的模板&#xff0c;和image类型相同&am…

【论文译文】BigGAN

译文仅供参考&#xff01; 原文是pdf&#xff0c;想下载的话可以戳&#xff1a;http://www.gwylab.com/pdf/biggan_chs.pdf

WGAN、WGAN-GP、BigGAN

一、WGAN概述 WGAN论文地址&#xff1a;https://arxiv.org/abs/1701.07875 在这篇论文中&#xff0c;作者研究了不同的测量方法&#xff0c;来描述模型生成样本和证实样本之间分布差距&#xff0c;或者说&#xff0c;不同的散度定义&#xff0c;在对比之后&#xff0c;认为EM…

tf hub bigGan 猫变狗

原文链接: tf hub bigGan 猫变狗 上一篇: tf hub mobile_net 使用 下一篇: tf hub 使用缓存 数据 根据输入的标签和噪声生成指定类别的图片&#xff0c;类似infogan 每次向着目标前进一小步&#xff0c;将其中的过程变化记录下来 import tensorflow as tf import n…