OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)

简介: OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)

需要源码和图片请点赞关注收藏后评论区留言私信~~~

一、多模板匹配

匹配过程中同时查找多个模板的操作叫做多模板匹配,多模板匹配实际上就是进行了n次单模板多目标匹配操作,n的数量为模板总数

实战1:同时匹配三个不同的模板

每一个模板都要做一次单模板多目标匹配,最后把所有模板的匹配结果汇总到一起,单模板多目标匹配的过程可以封装成一个方法,方法参数为模板和原始图像,方法内部将计算结果再加工以下,直接返回所有红框左上角和右下角两点横纵坐标的列表,在方法之外,将所有模板计算得出的坐标汇总到一个列表中,按照这些汇总的坐标一次性将所有红框都绘制出来 效果如下

其中模板就是里面的三个图像

部分代码如下

import cv2
def myMatchTemplate(img, templ):  # 自定义方法:获取模板匹配成功后所有红框位置的坐标
    width height, c = templ.hape  # 获取模板图像的宽度、高度和通道数
    results = cv2.matchTemplate(img, templ, cv2.TM_CCOEFF_NORMED)  # 按照标准相关系数匹配
    loc = list()  # 红框的列表
    for i in range(len(results)):  # 遍历结果数组的行            if results[i][j 0.99:  # 如果相关系数大于0.99则认为匹配成功
                # 在列表中添加匹配 j + width, i + height))
    return lo
img = cv2.imread("background2.jpg")  # 读取原始图像
templs = list()  # 模板列templs.append(cv2.imread("template.png"))  # 添加模板1
templs.append(cv2.imr=d("tempe2.=png"))  # 添加模板2
templs.append(cv2.imr=ead("template3.png"))  # 添加模板3
=
loc = list()  # 所有模板匹配成功位置的红框坐标列表
for t in templs:  # 遍历所有模板
    loc += myMatchTemplate(img, t)  # 记录该模板匹配得出的
for i in loc:  # 遍历所红框的坐标
    cv2.rectanglimg, (i[0], i[1]), (i[2], i[3]), (0, 0, 255), 2)  # 在图片中绘制红框
cv2.imshow("img", img)  # 显示匹配的结果
cv2.waitKey()  # 按下任何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

使用多模板匹配能够解决很多生活中的实际问题,例如一个收费停车场有四个车位,车位上陆续地停放了四辆车,通过多模板匹配,能够知晓这四辆车分别停在了哪个车位上,接下来模拟这一生活场景

实战2:使用多模板匹配让控制台判断四辆车分别停在了哪个车位上

模板图如下

其中车的顺序是橙色-蓝色-红色-绿色

输出结果如下

可见正确的判断了不同车处于哪个停车位上

部分代码如下

import cv2
image = cv2.imread("image.png")  # 读取原始图像
templs = []  # 模板列表
templs.append(cv2.imread("car1.png"))  # 添加模板图像1
templs.append(cv2.("car2.png"))  # 添加模板图像2
templs.aend(cv2.imread("car3.png"))  # 添加模板图像3
templs.append(cv2.imread("car4.png"))  # 添加模板图像3
for car in tems:  # 遍历所有模板图像
    # 按照标准相关系数匹配
    results = cv2.matchTemplate(image, car, cv2.TM_CCOEFF_NORMED)
    for i in range(len(results)):  # 遍历结果数组的行
        for j in range(n(results[i])):  # 遍历结果数组的列
            # print(results[i][j])
            if results[i]] > 0.99:  # 如果相关系数大于0.99则认为匹配成功
                if 0 < j  140:
                    print("车位编号:", 1)
                elif j <= 330:
                    print("车位编号:", 2)
                elif j <= 500:
                    print("车位编号:", 3)
                else:
                    print("车位编号:", 4)
                break

总结

模板匹配包括单模板匹配和多模板匹配,单模板匹配又包括单目标匹配和多目标匹配。实现这些内容的基础方法就是模板匹配方法,即matchTemplate()方法。其中,读者朋友重点掌握模板匹配方法的6个参数值。此外,为了实现单目标匹配,除了需要使用模板匹配方法matchTemplate()外,还要使用minMaxLoc()方法,这个方法返回的就是单目标匹配的最优结果。对于多目标匹配,读者朋友要将它和多模板匹配区分开:多目标匹配只有一个模板,而多模板匹配则有多个模板

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
30天前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
103 61
Python装饰器实战:打造高效性能计时工具
|
5天前
|
机器学习/深度学习 IDE 开发工具
基于OpenCV的车牌识别系统源码分享
基于OpenCV的车牌识别系统主要利用图像边缘和车牌颜色定位车牌,再利用OpenCV的SVM识别具体字符,从而达到车牌识别的效果。
36 4
基于OpenCV的车牌识别系统源码分享
|
2天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
26天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
54 20
|
4月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
922 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
5月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
76 4
|
5月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
6月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
6月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
181 1
|
8月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
282 1

热门文章

最新文章