Opencv+Python笔记(九)模板匹配

news2024/12/23 4:28:26

模板匹配

模板匹配常用于对象检测,且实现简单计算效率高。但如果输入图像中存在变化因素如旋转、缩放、视角变化等,模板匹配很容易失效

模板匹配原理:

1.匹配方式为模板 (a * b) 在原图像 (m * n) 上滑动 使用参数method中指定的方法,将模板与图像的所有重叠部分进行比较,最终得到的res大小为 ((m - a + 1) * (n - b + 1))
2.如果使用了含有归一化的匹配方法,那么模板匹配后就不再需要进行归一化处理,结果将在0和1的范围内,否则,需要使用 normalize 函数对结果进行归一化处理。
3.完成匹配后,要在使用cv.minMaxLoc()方法定位结果图像的全局最小值(图像中的最暗点)和全局最大值(图像中的最亮点)。如果使用的是平方差匹配,则最小值位置是最佳匹配位置,否则,则最大值位置是最佳匹配位置。最佳匹配位置即模板图片的左上角

Opencv API:

res = cv.matchTemplate(img, template, method)

img:要进行模板匹配的图像
template:模板(图像)
method:模板匹配算法。

四种模板匹配算法:

前两种算法均为匹配结果值越低匹配度越高,后四种算法均为匹配结果值越高匹配度越高
1.平方差匹配(cv.TM_SQDIFF):以方差进行匹配。若完全匹配则结果为0。即匹配结果越小则匹配度越高
2.标准(归一化)平方差匹配(cv.TM_SQDIFF_NORMED):归一化后的平方差匹配,结果越接近0匹配度越高,越接近1匹配度越低
3.相关匹配(cv.TM_CCORR):利用模板与图像间的乘法进行匹配,数值越大表示匹配程度较高,越小表示匹配效果差。
4.标准(归一化)相关匹配(cv.TM_CCORR_NORMED)
5.相关系数匹配(cv.TM_CCOEFF):将模板图像与其均值的相对值,与输入图像与其均值的相关值进行匹配,1表示完美的匹配,-1表示最差的匹配。
6.标准(归一化)相关系数匹配(cv.TM_CCOEFF_NORMED)

代码:

src = img.copy()  #原图像
roi = temp.copy()  #模板

#模板匹配
res = cv2.matchTemplate(src, roi, cv2.TM_CCORR_NORMED)


#返回模板匹配数据(先小后大,先数值后位置)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

#取匹配最佳位置(左上角)
top_left = max_loc

#取模板大小 .shape([:2])表示返回shape函数返回值的前两项 即长宽
roi_row, roi_col = roi.shape[:2]

#画矩形
cv2.rectangle(src, top_left, (top_left[0] + roi_col, top_left[1] + roi_row), (255, 0, 0), 5)

画矩形
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/454683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生(docker+k8s+阿里云)

Gitee-Kubernetes学习 kubectl备忘清单 k8s官方文档-task [云原生-kubectl命令详解] ingress详解 ingress官方文档 云原生-语雀-架构师第一课 如上图,服务器有公网ip和私网ip,公网ip是外部访问服务器用的,重启一次实例就变化了,如…

常用数据结构与颜色空间

常用数据结构与颜色空间 矩阵和图像类型 图像可能是灰度,彩色,4 通道的(RGBalpha),其中每个通道可以包含任意的整数或浮点数。因此,该类型比常见的、易于理解的3通道 8位 RGB 图像更通用。 RBG颜色空间、 HSV/HLS颜色空间、 Lab…

Blender 3.5 面的操作(二)

目录 1. 面操作1.1 面的切割1.2 整体切分1.3 面的法向1.4 正面、背面1.5 翻转法向1.6 填充面1.7 X-Ray 透视模式 1. 面操作 1.1 面的切割 切割工具 Knife,快捷键 k 选中一个面 按k键,进入切割工具(建议使用快捷键切割)&#xff…

crossover可以安装什么软件?支持的软件列表

CrossOver是一款可以在Mac和Linux等操作系统上运行Windows软件,而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine,它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。本文将会对CrossOver进行详细介绍,并回答…

“SCSA-T学习导图+”系列:IPSec VPN原理与应用

本期引言: 本章主要讲解IPSec VPN相关理论概念,工作原理。从安全和加密原理入手,讲解了IPSec 在VPN对等体设备实现的安全特性,如数据的机密性、数据的完整性,数据验证等。重点分析IPSec封装模式,IPSec安全…

技术解读丨多模数据湖:助力AI技术,推动内容管理平台智能化升级

随着数字化时代的到来,数据已经成为企业的重要资产之一。因此,构建高效的内容管理平台变得至关重要。本文重点介绍SequoiaDB多模数据湖技术在内容管理平台中的应用和成效,以及其对企业非结构化数据管理和AI的推动作用。 随着数字化时代的到来…

Vue3技术6之toRef和toRefs、shallowReactive与shallowRef、readonly与shallowReadonly

Vue3技术6 toRef和toRefstoRefApp.vueDemo.vue toRefsApp.vueDemoTwo.vue 总结 shallowReactive与shallowRefshallowReactiveApp.vueDemo.vue shallowRefDemo.vue 总结 readonly与shallowReadonlyApp.vueDemo.vueDemoTwo.vue总结 toRef和toRefs toRef App.vue <template&…

SpringCloud入门实战(七)-Hystrix服务限流

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术&#xff0c;都可以先去官网先看看&…

电子行业数字工厂管理系统的生产管理模式是什么

随着电子行业的不断发展&#xff0c;数字工厂管理系统在生产管理中的应用越来越广泛。数字工厂系统是一种综合管理系统&#xff0c;它将企业的采购、生产、销售、财务、人力资源等多个方面进行整合&#xff0c;实现了企业资源的有效整合和管理效率的提升。电子行业数字工厂系统…

vue 使用 threejs 加载第三方模型

threejs 加载第三方模型 接专栏的上一篇博文&#xff0c;这是加载第三方模型相关的。这篇博文拖了很久了哈&#xff0c;简单说一下吧&#xff0c;本来不想写了的&#xff0c;觉得相对来说比较简单&#xff0c;但是还是稍微一扯。为啥要加载第三方呢&#xff0c;上一篇我们绘制的…

人工智能:技术的进步与未来展望

一、引言 1.人工智能的定义 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指由人类创造的具有某种程度上模拟、延伸或超越人类智能的技术。AI技术使计算机能够从数据中学习、推理、适应并执行类似人类大脑所进行的任务。这些任务包括图像识别、…

【Linux命令行与Shell脚本编程】三,Linux文件系统

Linux命令行与Shell脚本编程 第三章 Linux文件系统 文章目录 Linux命令行与Shell脚本编程三.Linux文件系统3.1,查看文件3.1.1,ls 命令 选项和参数3.1.2,过滤输出列表 3.2, 处理文件3.2.1,touch 创建文件3.2.2,cp 复制文件cp -i 覆盖询问cp -R 递归cp命令中使用通配符 3.2.3,ta…

NFS网络文件共享服务

NFS网络文件共享服务 NFS&#xff08;network file system&#xff09;网络文件系统 可以把对方主机资源直接挂载到自己电脑上&#xff0c;比FTP更加方便 明文传输 没有认证机制 安全性很差 只在局域网使用 依赖RPC(远程过程调用&#xff09; 需要安装nfs-utils(提供NFS服务)…

对话西门子Mendix:低代码与亚马逊云科技Serverless的底层融合,助力企业提效降本...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 3月30日 亚马逊云科技举办了主题为“全面拥抱Serverless时代”的创新大会&#xff0c;分享了亚马逊云科技17年引领Serverless发展的技术创新、应用场景以及全球客户的创新实践。 会上&#xff0c;亚马逊云科技大中华区产品部…

RocketMQ高级概念

一 RocketMQ核心概念 1.消息模型&#xff08;Message Model&#xff09; RocketMQ主要由 Producer、Broker、Consumer 三部分组成&#xff0c;其中Producer 负责⽣产消息&#xff0c;Consumer 负责消费消息&#xff0c;Broker 负责存储消息。Broker 在实际部署过程中对应⼀台…

[MLIR] 转换流程详解(以Toy接入为例)

参考资料&#xff1a; [MLIR] 转换流程详解(以Toy接入为例) - 知乎 (zhihu.com) 在本文中我们使用 toy 语言接入 MLIR&#xff0c;最终转化为 LLVM IR (或目标代码)为例&#xff0c;来讲解 MLIR 的转换流程。具体的流程如下&#xff1a; .toy 源文件 → AST → MLIRGen(遍历AST…

【SSM】整合开发

文章目录 1.ssm整合过程1.1步骤1.2 Spring整合SpringMVC的问题 2.准备工作2.1 添加依赖2.2 创建数据库 3.相关配置3.1 整合Spring和Mybatis3.2 引入SpringMVC3.3 spring整合入web项目 4.测试整合效果 1.ssm整合过程 1.1步骤 &#xff08;1&#xff09;Spring整合MyBatis 通过…

PHP数组的功能及实现案例

目录 前言 一、什么是数组 二、创建关联数组 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 三、创建索引数组 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 前言 1.若有选择&#xff0c;可实现在目录里进行快速查找&#xff…

golang-GC垃圾回收

参考&#xff1a;https://juejin.cn/post/7040737998014513183#comment 垃圾回收&#xff08;Garbage Collection&#xff0c;缩写为GC&#xff09;&#xff0c;是一种自动内存管理机制。 相关术语 赋值器:说白了就是你写的程序代码&#xff0c;在程序的执行过程中&#xff0c…

《架构设计》-08-分布式系统和Rpc架构

文章目录 1. 分布式系统1.1 横向拆分1.2 分布式服务框架优缺点1.3 功能/非功能需求 2. RPC架构2.1 概述2.2 网络通信2.3 序列化2.3.1 概述2.3.2 传输协议 2.4 服务调用2.4.1 概述2.4.2 同步调用2.4.3 异步调用&#xff08;Future模式为例&#xff09;1&#xff09;Future-Get模…