博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV+python:模板匹配
阅读量:3948 次
发布时间:2019-05-24

本文共 1570 字,大约阅读时间需要 5 分钟。

1,模板匹配的概念及原理

模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.

我们需要2幅图像:

模板 (T): 将和原图像比照的图像块
原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域

我们的目标是检测最匹配的区域:

在这里插入图片描述
为了确定匹配区域, 我们不得不滑动模板图像和原图像进行比较:
在这里插入图片描述
通过滑动, 我们的意思是图像块一次移动一个像素 (从左往右,从上往下). 在每一个位置, 都进行一次度量计算来表明它是 “好” 或 “坏” 地与那个位置匹配 (或者说块图像和原图像的特定区域有多么相似)
对于 T 覆盖在 I 上的每个位置,你把度量值 保存 到 结果图像矩阵 R中. 在 R 中的每个位置 (x,y) 都包含匹配度量值:
在这里插入图片描述上图就是 TM_CCORR_NORMED 方法处理后的结果图像 R . 最白的位置代表最高的匹配. 正如您所见, 红色椭圆框住的位置很可能是结果图像矩阵中的最大数值, 所以这个区域 (以这个点为顶点,长宽和模板图像一样大小的矩阵) 被认为是匹配的.
实际上, 我们使用函数 minMaxLoc 来定位在矩阵 R 中的最大值点 (或者最小值, 根据函数输入的匹配参数) .
OpenCV通过函数 matchTemplate 实现了模板匹配算法. 可用的方法有6个:
在这里插入图片描述
源代码:

import cv2 as cvimport numpy as npdef template_demo():    tpl = cv.imread("F:/images/T.png")  #模板图像    target = cv.imread("F:/images/I.png")#原图像    cv.imshow("template image", tpl)    cv.imshow("target image", target)    methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED] #标准平方差匹配 ,标准相关匹配,标准相关系数匹配    th, tw = tpl.shape[:2]  #模板的高宽    for md in methods:       # print(md)        result = cv.matchTemplate(target, tpl, md)   #像素点的相关度量值        min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result) #寻找匹配最值(大小和位置)        if md == cv.TM_SQDIFF_NORMED:            tl = min_loc        else:            tl = max_loc        br = (tl[0]+tw, tl[1]+th);  #确定匹配区域        cv.rectangle(target, tl, br, (0, 0, 255), 2)#将匹配区域绘制到原图上        cv.imshow("match-"+np.str(md), target)       # cv.imshow("match-" + np.str(md), result)src = cv.imread("F:/images/I.png")cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)cv.imshow("input image", src)template_demo()cv.waitKey(0)cv.destroyAllWindows()

运行结果:

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

转载地址:http://exhwi.baihongyu.com/

你可能感兴趣的文章
Algorithm: Principle Component Analysis for High Dimension Reduction Data
查看>>
Naive Bayesian for Text Classification (MLE, Gaussian Naive Bayesian)
查看>>
Algorithm: Decision Tree, Entropy, Information Gain and Continues features
查看>>
FastDFS 架构分析
查看>>
Windows 应用生成MiniDump文件的方法笔记
查看>>
安装FastDFS单机版环境
查看>>
动态规划-背包问题
查看>>
Windows10 + Nodejs调用C++语言Dll
查看>>
CSAPP - 一个简单的Shell
查看>>
《算法4》 Windows/Mac环境下使用Visual Studio Code和Orcale JDK1.8开发环境搭建
查看>>
精心整理很实用的前端笔记,看完你就在css上有很深的造诣了!!!
查看>>
前端开发在工作中用到的工具、软件、库.......------Sesiid
查看>>
正则表达式~~~很全的------Sestid
查看>>
在HTML中嵌入百度地图------Sestid
查看>>
Js或jQuery图片层叠轮播------Sestid
查看>>
js或jQuery实现返回顶部功能------Sestid
查看>>
JS实现拖拽效果------Sestid
查看>>
jQuery实现倒计时秒杀效果------Sestid
查看>>
jQuery实现html网页顶部自适应导航栏(media)------Sestid
查看>>
鼠标悬停显示下划线(带小特效)------Sestid
查看>>