python opencv模板匹配,图像识别 模板匹配 opencv
提供模板图像和目标图像,并满足模板图像是目标图像的一部分。从目标图像中寻找特定模板图像的过程就是模板匹配。本文将详细讲解如何使用PythonOpenCV实现图像模板匹配,供参考。
00-1010 1.什么是模板匹配和模板匹配方法?matchTemplate()介绍备料2。单模板匹配2.1单目标匹配2.2多目标匹配3。多模板匹配
目录
1.什么是模板匹配及模板匹配方法matchTemplate()
提供模板图像和目标图像,并满足模板图像是目标图像的一部分。从目标图像中寻找特定模板图像的过程就是模板匹配。OpenCV提供了matchTemplate()方法来帮助我们实现模板匹配。
此方法的语法如下:
cv2.matchTemplate(image,templ,method,result=None,mask=None)
在…之中
图像是目标图像。
Templ是模板图像。
方法是匹配方法。
掩码,这是可选的。仅当方法为cv2时,才支持此参数。TM_SQDIFF或cv2.tm _ ccorr _ normalized。
方法参数可以是下列值:
参数描述cv2。TM_SQDIFF差平方和匹配,也叫平方差匹配。可以理解为基于差异度的匹配,差异度越小,匹配度越高。完全匹配时间值的差值的平方和为0。2.TM _ sqdiff _规范化相关匹配。可以理解为基于相似度的匹配。相似度越高,计算结果越大,匹配度越高。2.TM _ CCORR标准相关匹配。规则同上。2.CV2的相关系数。TM _ ccorr _ normalized匹配cv2的相关系数。TM_CCOEFF匹配。也是基于相似度的匹配。计算结果是一个从-1到1的浮点数,1表示完全匹配,0表示与之无关,-1表示两张图片的亮度正好相反。2.CVTM _ CCCoeff _归一化标准匹配的相关系数,规则同上。使用matchTemplate()方法,模板将覆盖图像中的每个区域一次,每次都用选择的方法计算。每次的计算结果最终以二维数组的形式返回给我们。
介绍
为方便展示,特准备以下图片资料:
选取世界名画《三英战吕布》 (test.png),图像形状为(738,675,3):
剪下一部分图像元素作为下面要用到的模板材料。素材代码如下(不建议截图,截图被挖出来大小不能保证):
导入cv2
img=cv2.imread(test.png )
打印(图像形状)
#电灯
img1=img[20:220,320:480,]
#虎牢关牌匾
img2=img[75:150,200:310,]
#青龙岛
img3=img[170:530,575:650,]
#关云长
img4=img[270:670,160:330,]
cv2.imshow(img0 ,img)
cv2.imshow(img1 ,img1)
cv2.imshow(img2 ,img2)
cv2.imshow(img3 ,img3)
cv2.imshow(i
mg4", img4)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite(template_pic1.jpg, img1)
cv2.imwrite(template_pic2.jpg, img2)
cv2.imwrite(template_pic3.jpg, img3)
cv2.imwrite(template_pic4.jpg, img4)
取出的模板素材如下:
电灯
虎牢关牌匾
青龙刀
关云长
2.单模板匹配
单模板匹配,即在匹配时中只使用到一个模板的匹配过程。具体又可以分为单目标匹配和多目标匹配。
2.1 单目标匹配
单目标匹配,即模板在目标图像中只匹配 匹配程度最高的一个匹配结果。
这需要找出这一次匹配结果所在位置的坐标来确定其位置,
OpenCV提供了cv2.minMAXLoc()来实现。
该方法参数为matchTemplate()的返回值,会返回一个元组,元组中有四个值,分别是最小值、最大值、最小值时图像左上角顶点坐标,最大值时图像左上角顶点坐标。
接下来,使用 电灯(template_pic1) 图片来匹配原图,并用红色的矩形在原图像中圈出模板图像,使用标准差值平方和的匹配方式,代码如下:
import cv2
如图所示,成功标出了模板图。
如果要从多幅图像中,找出与模板最匹配的结果,
以标准差值平方和的匹配方式为例,
则可以对这些图像进行遍历,并比较每幅图像对应结果中的最小值,找出最小值中的最小值,则为最佳匹配项。
以两幅图像为例,将原图翻转一次,生成一张新的图像(翻转后结果与原图较像,但差异巨大)
翻转产生素材(test1.png)
import cv2
然后使用模板 关云长 (template_pic4.jpg)对两幅图像进行匹配,输出最佳匹配结果,并画红框展示:
import cv2
如图,test.png中的关云长与模板更为匹配。
2.2 多目标匹配
多目标匹配,即在目标图像中匹配出所有与模板图像匹配的结果。可以使用相关匹配或相关系数匹配。
素材准备
还以原图像"test.png"为参照,
为了产生方便我们做示例的图像,我们在该图像的基础上多加一盏电灯,生成"test2.png"
import cv2
多目标匹配
多目标匹配即对matchTemplate()匹配的总的结果,的计算情况数据,使用for循环遍历,并设定一个判断标准。
如使用标准相关系数(cv2.TM_CCOEFF_NORMED)的方法判断,如:如果计算值大于0.99,则我们认为匹配成功了。
使用电灯模板"template_pic1.jpg",匹配图像test2.png。并对匹配的结果用红色的矩形框标记。
代码示例如下:
import cv2
程序执行结果如下,成功匹配出了两盏灯。
3.多模板匹配
多模板匹配,即进行了n次单模板的匹配过程。
直接上示例:
在test.png中匹配电灯、青龙刀、虎牢关牌匾、关云长四个图像模板:
import cv2
匹配效果如下:
以上就是Python OpenCV实现图像模板匹配详解的详细内容,更多关于Python OpenCV图像模板匹配的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。