python-opencv 图像处理基础 (六)图像模板匹配

1、模板匹配
#模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域
#所以模板匹配首先需要一个模板图像T(给定的子图像)
#另外需要一个待检测的图像----源图像
#工作方法,在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。

#--------------------------模板匹配-------------------------
# 匹配方法:
# 差值平方和匹配:CV_TM_SQDIFF
# 标准化差值平方和匹配:CV_TM_SQDIFF_NORMED
# 相关匹配:CV_TM_CCORR
# 标准相关匹配:CV_TM_CCORR_NORMED
# 相关匹配:CV_TM_CCOEFF
# 标准相关匹配:CV_TM_CCOEFF_NORMED


import cv2
import numpy as np


def template_demo():
	tpl=cv2.imread('../opencv-python-img/roi.jpg')
	target=cv2.imread('../opencv-python-img/target.jpg')
	methods=[cv2.TM_SQDIFF_NORMED,cv2.TM_CCORR_NORMED,cv2.TM_CCOEFF_NORMED]
	th,tw=tpl.shape[:2]
	print(methods)
	for md in methods:
		print(methods)
		print('md',md)
		result=cv2.matchTemplate(target,tpl,md)
		min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(result)
		if md==cv2.TM_SQDIFF_NORMED:
			tl=min_loc
		else:
			tl=max_loc
		br=(tl[0]+tw,tl[1]+th)
		cv2.rectangle(target,tl,br,(0,0,255),2)
		#cv2.imshow('match-'+np.str(md),result)
		cv2.imshow('match-'+np.str(md),target)



if __name__ == '__main__':
	template_demo()

	cv2.waitKey(0)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值