OpenCV | 模版匹配

import cv2 #opencv读取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt#Matplotlib是RGB
%matplotlib inline

模版匹配

  • 模版匹配和卷积原理很像,模版在原图像上从原点开始滑动,计算模版与(图像被模版覆盖的地方)的差别层度,这个差别成都的计算方法在opencv里有6种,然后将每次计算的结果放入一个矩阵里,作为结果输出。假如原图案是A×B大小,而模版是a×b大小,则输出结果的矩阵是(A-a+1)×(B-b+1)

 face.jpg

lena.jpg

#模版匹配
img = cv2.imread('lena.jpg',0)
template = cv2.imread('face.jpg',0)
h,w = template.shape[:2]

 查看相关参数:

img.shape
template.shape
  • TM_SQDIFF : 计算平方不同,计算出来的值越小,越相关
  • TM_COORR :计算相关性,计算出来的值越大,越相关
  • TM_CCOEFF : 计算相关系统,计算出来的值越大,越相关
  • TM_SQDIFF_NORMED :计算归一化平方不同,计算出来的值越接近0,越相关
  • TM_CCORR_NORMED: 计算归一化相关性,计算出来的值越接近1,越相关
  • TM_CCOEFF_NORMED : 计算归一化相关系数,计算出来的值越接近1,越相关
methods = ['cv2.TM_CCOEFF','cv2.TM_CCOEFF_NORMED','cv2.TM_CCORR','cv2.TM_CCORR_NORMED','cv2.TM_SQDIFF','cv2.TM_SQDIFF_NORMED']res = cv2.matchTemplate(img,template,cv2.TM_SQDIFF)
res.shapemin_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)min_valmax_valmin_locmax_loc

 

for meth in methods:img2 = img.copy()#匹配方法的真值method = eval(meth)print (method)res = cv2.matchTemplate(img,template,method)min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)#如果是平方差匹配TM_SQDIFF或归一化平方差匹配TM_SQDIFF_NORMED,取最小值if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:top_left = min_locelse:top_left = max_locbottom_right = (top_left[0]+w,top_left[1]+h)#画矩形cv2.rectangle(img2,top_left,bottom_right,255,2)plt.subplot(121),plt.imshow(res,cmap='gray')plt.xticks([]),plt.yticks([]) #隐藏坐标轴plt.subplot(122),plt.imshow(img2,cmap = 'gray')plt.xticks([]),plt.yticks([])plt.suptitle(meth)plt.show()

运行出的结果

匹配多个目标对象

 mario_coin.jpg

mario.jpg

img_rgb = cv2.imread('mario.jpg')
img_gray = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)
template = cv2.imread('mario_coin.jpg',0)
h,w = template.shape[:2]res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
#匹配成都大于%80 的坐标
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]): #*号表示可选参数bottom_right = (pt[0] + w, pt[1] +h)cv2.rectangle(img_rgb,pt,bottom_right,(0,0,255),2)cv2.imshow('img_rgb',img_rgb)
cv2.waitKey(0)

运行结果:

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

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

相关文章

vscode一直不能跳转函数定义或者别的定义c_cpp_properties.json、settings.json

vscode好几天一直不能跳转函数定义或者别的定义,突然又好了。。。 c_cpp_properties.json {"configurations": [{"name": "windows-gcc-x86","includePath": ["${workspaceFolder}/**","D:/adas/ADAS_FUS…

go标准库

golang标准库io包 input output io操作是一个很庞大的工程,被封装到了许多包中以供使用 先来讲最基本的io接口 Go语言中最基本的I/O接口是io.Reader和io.Writer。这些接口定义了读取和写入数据的通用方法,为不同类型的数据源和数据目标提供了统一的接…

同旺科技 USB 转 RS-485 适配器 -- 隔离型(定制款)

内附链接 1、USB 转 RS-485 适配器 隔离版主要特性有: ● 支持USB 2.0/3.0接口,并兼容USB 1.1接口; ● 支持USB总线供电; ● 支持Windows系统驱动,包含WIN10 / WIN11 系统32 / 64位; ● 支持Windows …

一文例说嵌入式 C 程序的内聚和耦合

1 - 原理篇 低耦合,是指模块之间尽可能的使其独立存在,模块之间不产生联系不可能,但模块与模块之间的接口应该尽量少而简单。这样,高内聚从整个程序中每一个模块的内部特征角度,低耦合从程序中各个模块之间的关联关系…

多个加速度计/麦克风连接指引

座舱内的振动投诉:如乘客/驾驶员在车厢内感受到传动轴、方向盘抖动剧烈 图1.三轴模式下的单个加速度计 图2.软件设置界面 如果您只有一个加速度计,可以在三轴模式下使用一个加速度计找出客户投诉车厢内振动最强烈的区域。例如将加速度计连接到驾驶员座椅…

对接电商平台高效获取各大电商平台数据,商品详情数据代码示例

电商可以通过使用API接口获取商品信息数据。API是应用程序编程接口的缩写,它允许程序之间进行通信和数据传输。为了获取商品信息数据,电商可以利用API接口向商品供应商的数据库发送请求,然后接收并解析返回的数据。 具体来说,电商…

​ 数据库开发海外服务器选择:一篇教程看懂Amazon EC2开发环境搭建

大家的数据库之类的开发环境都是安装在哪的呢?平时开发用的数据库有时候回家还想要用一下,就需要远程到公司的电脑把数据库导出来,然后将文件下载到家里的电脑并导入家里电脑的数据库里,着实麻烦,或者选择内网穿透或虚…

11月29日,每日信息差//雷军个人向武汉大学捐赠13亿元现金//看电视默认设置新规一览:开机广告不超 5 秒、不设置一键付费

🎖 继长安汽车后,蔚来将与吉利控股达成换电业务合作 🎄 中国飞鹤入选工信部质量提升典型案例 🎆 雷军个人向武汉大学捐赠13亿元现金 🎇 奢侈品电商Farfetch或将私有化 🎁 亚马逊云科技宣布推出Amazon Q ✨ …

解决api-ms-win-crt-runtime-l1-1-0.dll丢失的问题,全是干货分享

今天我的电脑中突然出现关于“api-ms-win-crt-runtime-l1-1-0.dll”的错误提示,关闭提示后再次打开程序依然不能正常打开,出现这样的问题突然不知道是因为什么,于是就去了解了关于出现api-ms-win-crt-runtime-l1-1-0.dll错误的问题&#xff0…

Curl 命令方式对elasticsearch备份和恢复

https://blog.csdn.net/qq_34777982/article/details/131340478 之前也写过使用API请求的方式对ES数据进行快照方式备份,这里主要对之前的内容进行完善和补充。 版本兼容性 快照包含构成索引的磁盘上数据结构的副本。这意味着快照只能还原为可以读取索引的 Elasti…

去北京医院预约,需要医保卡号,但是社保卡不在身边,北京的医保卡号咋网上查询

目录 1 问题2 查询 1 问题 要去北京某一个医院预约挂号,预约的时候选择的医保,需要写医保卡号,但是自己的社保卡不在身边,怎么办 记住,医保卡号不是社保卡号,是不一样的 北京医保卡号是12位 2 查询 登陆这…

Vue3 学习笔记,快速初始化 Vue 项目及 Data 函数用法学习

快速初始化Vue项目 在学习之前,我们先通过引入JS文件的方式快速初始化一个 Vue 项目,首先我们先打开 VsCode 编辑器,具体步骤如下: 新建一个文件夹。新建index.html、style.css 和 index.js 文件。新建个lib目录,把下…

LeetCode2514.统计同位异构字符串数目

题目简单,关键是灵茶山艾府的代码写起来太优美,不得不记录一下 const int Mod 1e97; using ll long long; ll qmi(ll a,ll b,ll mod){ll res 1;while(b){if(b&1)res res*a%mod;aa*a%mod;b>>1;}return res; }class Solution { public:int c…

软考真的很难吗?选什么科目容易过?

在备考前,小伙伴们都十分担心试题太难导致自己辛苦备考大半年最后却通不过。软考试题真的很难吗?选什么科目比较容易过呢? 软考试题会很难吗? 软考试题确实是有一定的难度,特别是中级和高级部分科目,因为…

C语言——J /字符函数和字符串函数

前言:在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。 一、字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xff…

2024北京健康展,第11届中国国际大健康产业博览会4月举办

China-DJK北京健博会/打造2024年度全国首场大健康产业发展盛会; 2024第11届中国(北京)国际大健康产业博览会(China-DJK北京健博会) The 11th China (Beijing) International Health Industry Expo in 2024 时间&…

XMind思维导图:掌握思维之翼,激发无限创造力

在当今快速发展的信息时代,高效地表达和梳理思维显得尤为重要。在这个背景下,XMind作为一款思维导图软件,以其独特的优势脱颖而出。它不仅在Mac和Windows平台上均可使用,还以其人性化的设计和强大的功能,成为了思维导图…

2023亚马逊云科技re:Invent,在开发者板块探究如何利用技术重塑业务

美国当地时间11月27日,一年一度的亚马逊云科技re:Invent大会在美国拉斯维加斯盛大开幕。这场全球云计算领域的前沿盛会,已连续12年成为引领行业的风向标。那么本次2023亚马逊云科技re:Invent大会又有哪些可玩、可看的新项目,下面就一起来瞧一…

【AIGC】关于Prompt你必须知道的特性

代码和数据:https://github.com/tonyzhaozh/few-shot-learning 一、实践验证的大模型的特性 1. 大模型的偏差 示例:(文本的情感分析:一句话->P(积极)或者N(消极) Input: I hate this movie. Sentiment: Negativ…

查看mysql 或SQL server 的连接数,mysql超时、最大连接数配置

1、mysql 的连接数 1.1、最大可连接数 show variables like max_connections; 1.2、运行中连接数 show status like Threads_connected; 1.3、配置最大连接数, mysql版本不同可配置的最大连接数不同,mysql8.0的版本默认151个连接数,…