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,一经查实,立即删除!

相关文章

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开发环境搭建

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

解决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…

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

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

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…

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个连接数,…

java ssh 二手车交易管理系统eclipse开发mysql数据库MVC模式java编程网页设计

一、源码特点 JSP ssh 二手车交易管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT…

“2024年国考公共科目”趣谈

黄金的熔点仅为1064.43C,不锈钢、耐高温钢所需的冶炼温度也仅需2000℃以上,因此与正在进行中的“2024年国考公共科目笔试”的“报名人数首破300万,平均约77人竞争一岗位”相比,炼金炼钢温度全都败落下风。 网络图片 其中宁夏的一…

hugegraph-server安装部署(docker)

1、安装docker不说了,可以直接看我文章一键安装docker https://blog.csdn.net/qq_41060647/article/details/131568289?spm1001.2014.3001.5502 2、一个docker-compose文件解决。 如果不使用mysql,可以将docker-compose.yml文件中的mysql配置修改为其他…

CDC with Async FIFO

https://zipcpu.com/blog/2018/07/06/afifo.html

浏览器插api开发文档

chrome谷歌浏览器开发文档

数据结构与算法之美学习笔记:28 | 堆和堆排序:为什么说堆排序没有快速排序快?

目录 前言如何理解“堆”?如何实现一个堆?1. 往堆中插入一个元素2. 删除堆顶元素 如何基于堆实现排序?1. 建堆2. 排序 解答开篇内容小结 前言 本节课程思维导图: 我们今天讲另外一种特殊的树,“堆”(Heap&…

figma 基础使用——准备阶段

1. 注册账号 2. figma有客户端也有网页端,使用注意同步字体 之后点击下载window installeer 字体 3. 安装 Figma汉化包 通过figma.cool 网站,下载离线的汉化包 之后通过谷歌的扩展程序添加