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)  # 等待按键

输出:

相关推荐
白日做梦Q13 分钟前
GAN 在图像增强中的双刃剑:画质提升 vs 伪影生成
人工智能·深度学习·计算机视觉
Cherry的跨界思维1 小时前
5、Python长图拼接终极指南:Pillow/OpenCV/ImageMagick三方案
javascript·python·opencv·webpack·django·pillow·pygame
爱写代码的小朋友1 小时前
OpenCV 视频目标跟踪详解:MeanShift 与 CamShift 算法实战
opencv·目标跟踪
AI视觉网奇1 小时前
标签拷贝 labelme json格式
算法·计算机视觉
观望过往2 小时前
SpringBoot 集成 OpenCV 实现人脸图像抓取
spring boot·后端·opencv
Dev7z2 小时前
基于薄板样条与自由形变的非刚体图像拼接系统设计与实现
人工智能·计算机视觉
中杯可乐多加冰2 小时前
【解决方案】PASCAL VOC 、YOLO txt、COCO目标检测三大格式简述与PASCAL VOC COCO格式互转
深度学习·yolo·目标检测·计算机视觉·目标跟踪·视觉检测·coco
飞Link3 小时前
【论文笔记】《Improving action segmentation via explicit similarity measurement》
论文阅读·深度学习·算法·计算机视觉
吃吃今天努力学习了吗3 小时前
【论文阅读】Gaussian Grouping: Segment and Edit Anything in 3D Scenes
论文阅读·计算机视觉·3d·3dgs·三维分割