当前位置: 首页 > news >正文

day 32 学习笔记

文章目录

  • 前言
  • 一、模版匹配的概念
  • 二、模版匹配方法


前言

  • 通过今天的学习,我掌握了OpenCV中有关模版匹配和模版匹配方法的相关原理和操作

一、模版匹配的概念

  • 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图大的图片)中不断的滑动比较,通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。

需要注意的是:

  • 模版匹配不会进行边缘填充。

  • 类似于卷积,滑动比较,挨个比较象素。

  • 返回结果大小是:目标图大小-模板图大小-1。

二、模版匹配方法

res=cv2.matchTemplate(image, templ, method)

  • img:指原图像,一个灰度图或者彩色图
  • temp:模版图像,要求与原图像具有相同的通道数
  • method:匹配方法,包括以下几种
    • cv2.TM_CCOEFF
    • cv2.TM_CCOEFF_NORMED
    • cv2.TM_CCORR
    • cv2.TM_CCORR_NORMED
    • cv2.TM_SQDIFF
    • cv2.TM_SQDIFF_NORMED

实际上共有三种方法,只不过每一种方法对应一种归一化方法

  • 该方法的返回值是一个矩阵,矩阵中的每个元素代表原图像对应位置与模版图的匹配相似度
  • 可以想象成将将原图分为大小与模版相同的许多小块,每一个小块对应着一个索引坐标,而res则每一个小块上的匹配得分
# 读取图像
img = cv.imread(r"D:\AI\笔记课件\images\game.png")
temp = cv.imread(r"D:\AI\笔记课件\images\temp.png")
# 灰度化处理
# 这里的灰度化处理需要根据实际匹配的图像来选择是否要使用
img_gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
temp_gray = cv.cvtColor(temp,cv.COLOR_BGR2GRAY)
# 模版匹配
res = cv.matchTemplate(img_gray,temp_gray,cv.TM_CCOEFF_NORMED)
# 设置阈值,找到符合条件的坐标
threshold = 0.8
loc = np.where(res>=threshold)
# 获取模版宽高
h,w = temp.shape[:2]
# print(res[loc[0][0],loc[1][0]])
# 解包获取坐标
for i in zip(*loc): #y在前,x在后 (y,x)left_point = i[::-1]right_point = (i[1] + w,i[0] + h)# 绘制匹配区域cv.rectangle(img,left_point,right_point,(0,255,0),2,cv.LINE_AA)
# 显示图像
cv.imshow('img',img)
cv.waitKey(0)
cv.destroyAllWindows()

tips:注意这里使用到了where函数,该函数是使用行优先进行遍历和返回的,因此最后的结果中y坐标在前,x坐标在后


THE END

http://www.xdnf.cn/news/113509.html

相关文章:

  • 第七部分:向量数据库和索引策略
  • 【Pandas】pandas DataFrame pow
  • docker容器监控自动恢复
  • TKDE 2025年第3期研究热点与最新趋势
  • 中心极限定理(CLT)习题集 · 题目篇
  • 零基础上手Python数据分析 (22)案例实战]之利用 Matplotlib Seaborn 进行电商销售数据可视化分析
  • 罗伯·派克:Go语言创始者的极客人生
  • 人工智能与机器学习:二元分类决策树构建指南
  • Linux内核netlink机制 - 连接器(Netlink Connector)
  • ETL 数据集成都包含哪些?
  • 77. 组合
  • 【OpenGL with C++】1.使用CMake+GLFW+GLAD在Window搭建项目
  • Linux系统之----进程优先级、调度与切换
  • 基于 EFISH-SBC-RK3588 的无人机多光谱/红外热成像边缘计算方案
  • MyBatis操作数据库---从入门到理解
  • Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
  • centos7使用certbot完成nginx ssl证书续期
  • 最高支持高速L3商用,华为发布ADS 4智驾系统
  • 【OSG学习笔记】Day 8: 纹理贴图——赋予模型细节
  • MCU通信接口技术解析:UART、SPI与I2C
  • 【云计算】云计算中IaaS、PaaS、SaaS介绍
  • 基于 springboot+vue+elementui 的办公自动化系统设计(
  • 系统与网络安全------弹性交换网络(3)
  • Unity MR开发:探索混合现实的无限可能 (VisionPro和HoloLens 2 对比)
  • 【KWDB 创作者计划】_上位机知识篇---Github
  • 虚拟机详解
  • 第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门
  • 计算机网络学习笔记
  • Rust实现高性能目录扫描工具ll的技术解析
  • java面向对象编程【基础篇】之基础语法