Python实战社群
Java实战社群
长按识别下方二维码,按需求添加
扫码关注添加客服
进Python社群▲
扫码关注添加客服
进Java社群▲
作者丨小郭学数据
来源丨快学Python
模板匹配
OpenCV中的函数 matchTemplate 实现了模板匹配算法
平方差匹配 method=CV_TM_SQDIFF
标准平方差匹配 method=CV_TM_SQDIFF_NORMED
最好匹配为0.匹配越差,匹配值越大
相关匹配 method=CV_TM_CCORR
标准相关匹配 method=CV_TM_CCORR_NORMED
相关匹配 method=CV_TM_CCOEFF
标准相关匹配 method=CV_TM_CCOEFF_NORMED
参见CV学习笔记(十一):模板匹配[2]
def template_demo():
tpl=cv.imread("./images/lena_face.png") #模板图
target=cv.imread("./images/lena.jpg") #检测图
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: #如果是标准平方差匹配,0表示匹配结果最好,取最小值
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)
测试结果:
单从此次测试结果来看标准平方差匹配效果好一点
python+opencv3.3视频教学 基础入门: https://www.bilibili.com/video/BV1QW411F7e7?p=1
[2]CV学习笔记(十一):模板匹配: https://zhuanlan.zhihu.com/p/110425960
近期精彩内容推荐: