python+opencv图像模板匹配—单模板匹配

python+opencv图像模板匹配—单模板匹配

一、模板匹配

模板匹配目标在于在A图像中寻找B图像最相似的部分,A为输入图像,B为模板图像。其原理将模板图像B在图像A上滑动,遍历所有像素完成匹配
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、单模板匹配

在opnencv中利用函数cv2.matchTemplate函数实现:

result=cv2.matchTemplate(image,templ,method[,mask])
其中:
result为匹配返回结果,格式为矩阵
image为输入图像
templ为模板图像,必须小于或等于输入图像,图像类型必须相同

method为匹配方法,现阶段有6中方法:
cv2.TM_SQDIFF/cv2.TM_SQDIFF_NORMED/
cv2.TM_CCORR/cv2.TM_CCORR_NORMED
cv2.TM_CCOEFF/cv2.TM_CCOEFF_NORMED

mask为模板掩模,需要和图像模板templ具有相同类型和大小,一般为默认,只有在SQDIFF和CCORR_NORMED中支持

由于不同模板匹配方法不同,选用cv2.TM_SQDIFF函数进行匹配
利用cv2.minMaxLoc( )寻找结果中最大值,最小值,最大值位置,最小值位置
所得到的结果也实验代码如下

import cv2
import numpy as np
from matplotlib import pyplot as plt
#读取图像为灰度图像
img=cv2.imread('C:/Users/wp/Desktop/five/5.jpg',0)
#读取模板图像
template=cv2.imread('C:/Users/wp/Desktop/five/7.jpg',0)
#模板图像尺寸
th,tw=template.shape[::]
print(th,tw)

#进行模板匹配:匹配方式为SQDIFF,result的值为0表示匹配度越好,反之越差
rv=cv2.matchTemplate(img,template,cv2.TM_SQDIFF)
print(rv)
#归一化,将矩阵结果归一到0到1的范围内
cv2.normalize(rv, rv, 0, 1, cv2.NORM_MINMAX, -1 )
print(rv)

minVal,maxVal,minLoc,maxLoc=cv2.minMaxLoc(rv)
#相似度最小值
print("相似度最小值",minVal)
#相似度最大值
print("相似度最大值",maxVal)


#左上顶点坐标
topLeft=minLoc
#右下顶点坐标
bottomRight=(topLeft[0]+tw,topLeft[1]+th)

#画图,左上顶点,和右下顶点,白色255,宽度为2
cv2.rectangle(img,topLeft,bottomRight,255,2)

cv2.imshow("Matching Result", rv)
cv2.imshow("Detected Point", img)
cv2.waitKey()
cv2.destroyAllWindows()

结果:

280 89
[[1.5662291e+08 1.5261354e+08 1.4868202e+08 ... 1.7876922e+08
  1.7973040e+08 1.8063094e+08]
 [1.5570419e+08 1.5167946e+08 1.4771798e+08 ... 1.7974778e+08
  1.8073296e+08 1.8166957e+08]
 [1.5488346e+08 1.5082822e+08 1.4682650e+08 ... 1.8087574e+08
  1.8187194e+08 1.8283654e+08]
 ...
 [2.4001792e+08 2.3657427e+08 2.3339872e+08 ... 2.5952496e+08
  2.6294157e+08 2.6638003e+08]
 [2.4198950e+08 2.3858016e+08 2.3543363e+08 ... 2.6101248e+08
  2.6439066e+08 2.6780973e+08]
 [2.4398931e+08 2.4063030e+08 2.3747517e+08 ... 2.6249709e+08
  2.6586096e+08 2.6926288e+08]]
[[0.5814756  0.5665784  0.5519705  ... 0.66376233 0.66733366 0.67067975]
 [0.57806206 0.5631077  0.54838854 ... 0.6673982  0.6710588  0.67453885]
 [0.5750125  0.5599449  0.54507613 ... 0.6715893  0.67529076 0.67887485]
 ...
 [0.89133763 0.8785424  0.8667434  ... 0.9638179  0.9765126  0.9892885 ]
 [0.8986632  0.8859955  0.8743043  ... 0.9693449  0.9818968  0.9946007 ]
 [0.9060937  0.893613   0.88188976 ... 0.9748611  0.9873599  1.        ]]
相似度最小值 0.0
相似度最大值 1.0

在这里插入图片描述
在这里插入图片描述

三、参考文献及书籍

Opencv轻松入门,面向python,电子工业出版社,李立宗著

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114460.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • fastjson教程 List转JSONArray以及JSONArray转List[通俗易懂]

    fastjson教程 List转JSONArray以及JSONArray转List[通俗易懂]1.fastjsonList转JSONArrayList<T>list=newArrayList<T>();JSONArrayarray=JSONArray.parseArray(JSON.toJSONString(list));2.fastjsonJSONArray转ListJSONArrayarray=newJSONArray();List<T>list=JSONObject.parseArray(array.toJSONSt..

    2022年6月17日
    168
  • Bof基础实践_实践的基础是什么

    Bof基础实践_实践的基础是什么Bof基础Bof原理Linux下进程地址空间的布局典型的堆栈结构上图中可以看到栈中有returnaddress还有局部变量,也就是函数的参数,bof攻击是利用上参数的溢出将返回地址retur

    2022年8月4日
    3
  • 【Windows】Win10强制删除文件夹

    【Windows】Win10强制删除文件夹目前比较主流的Windows系统中,我们常常会遇到要对文件以及文件夹进行整理的时候,偶尔会遇到这种奇葩的问题:删除一个文件夹的时候吧,这个文件提示需要提供管理权限,问你是否继续。当点击了那个带盾牌的(就是赋予管理权限)的那个Button之后,仍然提示需要权限……简直不讲道理。因为这个东西是偶然出现的,所以这里留几个解决方法备用。1.重启重启能解决99%的问题!!!亘古不变的真理!…

    2022年4月27日
    65
  • 清关报关知识详解_海关清关中是什么意思

    清关报关知识详解_海关清关中是什么意思  加工中心清关代理流程报关知识科普    进口泰国二手加工中心清关代理流程报关知识科普    机电企业产品的定义:机电技术产品是指使用进行机械、电器、电子信息设备所生产的各类农具机械、电器、电子系统性能的生产管理设备和生活用机具。一般包括机械设备、电气设备、运输工具、电子产品、电子产品、仪器仪表、金属产品及其零部件。    那么什么是二手设备?    (一)已经可以使用(不含使用前测试、调试的设备),仍具备基本信息功能和一定能够使用时间价值的;    (二)未经使用,但是超过质量保

    2022年9月21日
    0
  • 虚拟机连接上网的步骤「建议收藏」

    虚拟机连接上网的步骤「建议收藏」1.首先查看本机的可上网的IP地址:我的本机IP地址是192.168.1.5,由此可以推出我的网关地址就是192.168.1.1这个网关就是可以用来访问的一个地址,一般子网掩码都是255.255.255.02.设置本机的Vmare8的IP为静态IP和并且一定要配到这个192.168.1.1这个网关下右键其属性配成对用的网关地址,一定要在一个网段内下面是虚拟机里面的配置,里面有个虚拟机网络编辑这个是可供虚拟机上网的网段,一定要在这个范围之内这个配置完之后

    2022年5月19日
    69
  • 原生JS投票特效

    效果:http://hovertree.com/texiao/js/24/效果图:代码如下:转自:http://hovertree.com/h/bjaf/jsdiaocha.htm特效:htt

    2021年12月23日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号