OpenCV计算机视觉 07 图像的模块匹配

在做目标检测、图像识别时,我们经常用到模板匹配,以确定模板在输入图像中的可能位置

API函数

python 复制代码
cv2.matchTemplate(image, templ, method, result=None, mask=None)

参数含义:

image:待搜索图像

templ:模板图像

method:计算匹配程度的方法,可以有:

TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;匹配越好,值越小;匹配越差,值越大。

TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。 TM_CCOEFF 相关系数匹配法:数值越大表明匹配程度越好。

TM_SQDIFF_NORMED 归一化平方差匹配法,匹配越好,值越小;匹配越差,值越大。

TM_CCORR_NORMED 归一化相关匹配法,数值越大表明匹配程度越好。

-> TM_CCOEFF_NORMED 归一化相关系数匹配法,数值越大表明匹配程度越好。

比如我要在可口可乐瓶中匹配出如下的可口可乐商标,这么做呢

可口可乐瓶:

要匹配的商标:

python 复制代码
import cv2
# 读取名为'cola.png'的图像作为原图
kele = cv2.imread('cola.png')  
# 读取名为'co_t.png'的图像作为模板
template = cv2.imread('template.png')  
​
cv2.imshow('kele', kele)  # 显示原图
cv2.imshow('c', template)  # 显示模板
cv2.waitKey(0)  # 等待按键
​
h, w = template.shape[:2]  # 获取模板的高度和宽度
# 在原图中匹配模板
res = cv2.matchTemplate(kele, template, cv2.TM_CCOEFF_NORMED)
# 获取匹配结果中的最小值、最大值及对应的位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)  
top_left = max_loc  # 最大匹配值的位置作为矩形的左上角
# 计算矩形的右下角
bottom_right = (top_left[0] + w, top_left[1] + h)  
# 在原图上绘制矩形
kele_template = cv2.rectangle(kele, top_left, bottom_right, (0, 255, 0), 2)  
cv2.imshow('k', kele_template)  # 显示绘制了矩形的原图
cv2.waitKey(0)  # 等待按键

输出:

相关推荐
gorgeous(๑>؂<๑)17 小时前
【ICLR26-Oral Paper-字节跳动】推理即表征:重新思考图像质量评估中的视觉强化学习
人工智能·深度学习·神经网络·机器学习·计算机视觉
啊阿狸不会拉杆17 小时前
《计算机视觉:模型、学习和推理》第 7 章-复杂数据密度建模
人工智能·python·学习·算法·计算机视觉·t分布·复杂数据密度建模
开开心心就好18 小时前
免费音频转文字工具,绿色版离线多模型可用
人工智能·windows·计算机视觉·计算机外设·ocr·excel·语音识别
咚咚王者18 小时前
人工智能之视觉领域 计算机视觉 第十二章 视频目标跟踪
人工智能·计算机视觉·音视频
啊阿狸不会拉杆19 小时前
《计算机视觉:模型、学习和推理》第 6 章-视觉学习和推理
人工智能·学习·算法·机器学习·计算机视觉·生成模型·判别模型
芯门20 小时前
FPGA商用级ISP(三):自动白平衡(AWB)算法实现与 FPGA 架构解析
图像处理·计算机视觉·fpga开发
挂科边缘1 天前
YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程
人工智能·深度学习·yolo·目标检测·计算机视觉·yolov12
咚咚王者1 天前
人工智能之视觉领域 计算机视觉 第十章 图像直方图
人工智能·opencv·计算机视觉
向哆哆2 天前
白血病细胞与正常细胞识别数据集:医学影像与智能诊断的细胞分析数据
人工智能·目标检测·计算机视觉
youcans_2 天前
【跟我学YOLO】YOLO26(3)安装配置与快速使用
图像处理·yolo·目标检测·计算机视觉·环境配置