python 模板匹配
【摘要】 TM_CCOEFF_NORMED可以用分数过滤,0.7效果还行。
不需要匹配的地方,可以用黑色填充,不能用白色填充,结果仍然返回矩形框。
注释的代码现在不能用分数过滤,会有误检
TM_SQDIFF_NORMED 物体角度变化可能会漏检
import cv2import osimport numpy as np path=r"JPEGImages/" templat...
TM_CCOEFF_NORMED可以用分数过滤,0.7效果还行。
不需要匹配的地方,可以用黑色填充,不能用白色填充,结果仍然返回矩形框。
注释的代码现在不能用分数过滤,会有误检
TM_SQDIFF_NORMED 物体角度变化可能会漏检
import cv2
import os
import numpy as np
path=r"JPEGImages/"
template = cv2.imread(r"E:/muban.jpg",0)
files=os.listdir(path)
for filepath in files:
target = cv2.imread(path+filepath,0)
if target is None:
continue
theight, twidth = template.shape[:2]
w, h = template.shape[::-1]
# 使用matchTemplate对原始灰度图像和图像模板进行匹配
res = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED)
# 设定阈值
threshold = 0.6
# res大于70%
loc = np.where(res >= threshold)
# 使用灰度图像中的坐标对原始RGB图像进行标记
for pt in zip(*loc[::-1]):
cv2.rectangle(target, pt, (pt[0] + w, pt[1] + h), (7, 249, 151), 2)
# 显示图像
cv2.imshow('Detected', target)
cv2.waitKey(0)
# #执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
# result = cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED)
#
# cv2.normalize( result, result, 0, 1, cv2.NORM_MINMAX, -1 )
# #寻找矩阵(一维数组当做向量,用Mat定义)中的最大值和最小值的匹配结果及其位置
# min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# #匹配值转换为字符串
# #对于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法min_val越趋近与0匹配度越好,匹配位置取min_loc
# #对于其他方法max_val越趋近于1匹配度越好,匹配位置取max_loc
# #绘制矩形边框,将匹配区域标注出来
# #min_loc:矩形定点
# #(min_loc[0]+twidth,min_loc[1]+theight):矩形的宽高
# #(0,0,225):矩形的边框颜色;2:矩形边框宽度
# cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),2)
# #显示结果,并将匹配值显示在标题栏上
# print(min_val,max_val)
# cv2.imshow("MatchResult",target)
#
# cv2.waitKey()
cv2.imwrite(r"e:/new/13.jpg",target)
cv2.destroyAllWindows()
①TM_SQDIFF是平方差匹配;TM_SQDIFF_NORMED是标准平方差匹配。利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大。
②TM_CCORR是相关性匹配;TM_CCORR_NORMED是标准相关性匹配。采用模板和图像间的乘法操作,数越大表示匹配程度较高, 0表示最坏的匹配效果。
③TM_CCOEFF是相关性系数匹配;TM_CCOEFF_NORMED是标准相关性系数匹配。将模版对其均值的相对值与图像对其均值的相关值进行匹配,1表示完美匹配,-1表示糟糕的匹配,0表示没有任何相关性(随机序列)。
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/95310595
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)