Python Opencv实践 - 模板匹配(Template Matching)

复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img_slamdunk = cv.imread("../SampleImages/slamdunk.jpg", cv.IMREAD_COLOR)
print(img_slamdunk.shape)

template_sakura = cv.imread("../SampleImages/sakura.png", cv.IMREAD_COLOR)
print(template_sakura.shape)
rows,cols,channels = template_sakura.shape

#模板匹配
#cv.matchTemplate(image,templ,method[,result[,mask]])
#image:原图
#templ:用于匹配的模板
#method:原图与模板匹配的方法
#       TM_SQDIFF:平方差匹配法
#       TM_SQDIFF_NORMED:归一化平方差匹配法 
#       TM_CCORR:相关匹配法
#       TM_CCORR_NORMED:归一化相关匹配法
#       TM_CCOEFF:系数匹配法
#       TM_CCOEFF_NORMED:归一化系数匹配法
#result:匹配结果
#mask:匹配的掩膜(遮罩)
#参考资料:https://blog.csdn.net/raychiu757374816/article/details/119609851
matchResult = cv.matchTemplate(img_slamdunk, template_sakura, cv.TM_SQDIFF_NORMED)

#找到最佳匹配的位置,对于平方差匹配法,要找到结果矩阵中最小值的位置。对于相关匹配法,要找到结果矩阵中最大值的位置。
#minVal,maxVal,minLoc,maxLoc = cv.minMaxLoc(src[,mask])
#src:输入矩阵
#mask:掩膜
#minVal:矩阵的最小值
#maxVal:矩阵的最大值
#minLoc:矩阵的最小值的位置
#maxLoc:矩阵的最大值的位置
#参考资料:https://blog.csdn.net/qq_29023939/article/details/81023062
minVal,maxVal,minLoc,maxLoc = cv.minMaxLoc(matchResult)

#用矩形标记结果位置
top_left = minLoc;
bottom_right = (top_left[0] + cols, top_left[1] + rows)
cv.rectangle(img_slamdunk, top_left, bottom_right, (0,255,0), 2)

#显示图像
fig,axes = plt.subplots(nrows=2, ncols=1, figsize=(15,15), dpi=100)
axes[0].set_title("Template")
axes[0].imshow(template_sakura[:,:,::-1])
axes[1].set_title("Result")
axes[1].imshow(img_slamdunk[:,:,::-1])
相关推荐
郭逍遥6 分钟前
[工具]B站缓存工具箱 (By 郭逍遥)
windows·python·缓存·工具
上海合宙LuatOS16 分钟前
全栈工程师实战手册:LuatOS日志系统开发指南!
java·开发语言·单片机·嵌入式硬件·物联网·php·硬件工程
多敲代码防脱发17 分钟前
导出导入Excel文件(详解-基于EasyExcel)
java·开发语言·jvm·数据库·mysql·excel
alpszero32 分钟前
YOLO11解决方案之物体模糊探索
人工智能·python·opencv·计算机视觉·yolo11
伊织code1 小时前
PyTorch API 6 - 编译、fft、fx、函数转换、调试、符号追踪
pytorch·python·ai·api·-·6
struggle20251 小时前
continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
javascript·ide·python·typescript·开源
多巴胺与内啡肽.1 小时前
OpenCV进阶操作:风格迁移以及DNN模块解析
人工智能·opencv·dnn
来自星星的坤1 小时前
深入理解 NumPy:Python 科学计算的基石
开发语言·python·numpy
小声读源码1 小时前
【技巧】使用UV创建python项目的开发环境
开发语言·python·uv·dify
程序员杰哥1 小时前
自动化测试基础知识详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例