opencv 模板匹配,在图像中寻找物体

使用模板匹配在图像中寻找物体

模板匹配

模板匹配就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置:
图解模板匹配
opencv中用 cv.matchTemplate() 实现模板匹配。
模板匹配的原理其实很简单,就是不断地在原图中移动模板图像去比较,有6种不同的比较方法,详情可参考: TemplateMatchModes
1. 平方差匹配CV_TM_SQDIFF:用两者的平方差来匹配,最好的匹配值为0
2. 归一化平方差匹配CV_TM_SQDIFF_NORMED
3. 相关匹配CV_TM_CCORR:用两者的乘积匹配,数值越大表明匹配程度越好
4. 归一化相关匹配CV_TM_CCORR_NORMED
5. 相关系数匹配CV_TM_CCOEFF:用两者的相关系数匹配,1表示完美的匹配,-1表示最差的匹配
6. 归一化相关系数匹配CV_TM_CCOEFF_NORMED

归一化的意思就是将值统一到0~1,这些方法的对比代码可到源码处查看。模板匹配也是应用卷积来实现的:假设原图大小为W×H,模板图大小为w×h,那么生成图大小是(W-w+1)×(H-h+1),生成图中的每个像素值表示原图与模板的匹配程度。

实验:源图像中匹配模板图像

源图像:
源图像
模板图像:
模板图像

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

# 1.模板匹配
img = cv.imread('lena.jpg', 0)
template = cv.imread('face.jpg', 0)
h, w = template.shape[:2]  # rows->h, cols->w

# 6种匹配方法
methods = ['cv.TM_CCOEFF', 'cv.TM_CCOEFF_NORMED', 'cv.TM_CCORR',
           'cv.TM_CCORR_NORMED', 'cv.TM_SQDIFF', 'cv.TM_SQDIFF_NORMED']

for meth in methods:
    img2 = img.copy()

    # 匹配方法的真值
    method = eval(meth)
    res = cv.matchTemplate(img, template, method)
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)

    # 如果是平方差匹配TM_SQDIFF或归一化平方差匹配TM_SQDIFF_NORMED,取最小值
    if method in [cv.TM_SQDIFF, cv.TM_SQDIFF_NORMED]:
        top_left = min_loc
    else:
        top_left = max_loc
    bottom_right = (top_left[0] + w, top_left[1] + h)

    # 画矩形
    cv.rectangle(img2, top_left, bottom_right, 255, 2)

    plt.subplot(121), plt.imshow(res, cmap='gray')
    plt.xticks([]), plt.yticks([])  # 隐藏坐标轴
    plt.subplot(122), plt.imshow(img2, cmap='gray')
    plt.xticks([]), plt.yticks([])
    plt.suptitle(meth)
    plt.show()

实验结果

匹配方法:cv.TM_CCOEFF匹配结果

匹配多个物体

前面我们是找最大匹配的点,所以只能匹配一次。我们可以设定一个匹配阈值来匹配多次:

实验:匹配图像中的硬币

原图像
模板图像

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

# 2.匹配多个物体
img_rgb = cv.imread('mario.jpg')
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread('mario_coin.jpg', 0)
h, w = template.shape[:2]

res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
threshold = 0.8
# 取匹配程度大于%80的坐标
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):  # *号表示可选参数
    bottom_right = (pt[0] + w, pt[1] + h)
    cv.rectangle(img_rgb, pt, bottom_right, (0, 0, 255), 2)

cv.imshow('img_rgb', img_rgb)
cv.waitKey(0)
cv.destroyAllWindows()

代码难点讲解

第3步有几个Python/Numpy的重要知识:

x = np.arange(9.).reshape(3, 3)
print(np.where(x > 5))
# 结果:(array([2, 2, 2]), array([0, 1, 2]))

图解np.where
zip()函数,功能强大到难以解释,举个简单例子就知道了:

x = [1, 2, 3]
y = [4, 5, 6]
print(list(zip(x, y)))  # [(1, 4), (2, 5), (3, 6)]

实验结果

实验匹配到了多个硬币

Python图像处理,cv2模块,OpenCV实现检索
weixin_43649691的博客
12-17 1067
前言 利用Python实现OpenCV实现边缘检测。废话不多说。 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: cv2模块; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 OpenCV可以检测图像的主要特征,然后提取图像的特征,使其成为图像描述符 这些图像特征,也就是图像描述符,可以作为图像搜索的数据库 特征检测算法 这里简单介绍一下OpenCV常用的几种特征检测和提取算法。 Harris、FAST:用于检测角点
opencv 图像检测导出子图像
opencv案例
12-27 385
opencv 图像检测导出子图像 #include “stdafx.h” #include “opencv2/imgproc/imgproc.hpp” #include “opencv2/highgui/highgui.hpp” #include “opencv2/opencv.hpp” #include “windows.h” #include <time.h> #include &...
python OpenCV 模板匹配,单目标,多目标匹配,在一幅图像找出与模板匹配的对象
03-02
1、单模板单目标,多目标匹配 2、多模板,多目标匹配 3、通过OpenCV模板匹配方法,实现片的匹配功能 4、相关系数匹配,最小平方差匹配 5、matchTemplate
模板匹配,以(九)
weixin_30583563的博客
07-15 479
一 核心思想   模板匹配:通俗德来讲就是以,通过一部分来找到它在位置. 二 常见的方法 cv.TM_SQDIFF_NORMED 平方差匹配法   采用平方差来进行匹配,最好的匹配值为0,匹配越差,匹配值就越大 cv.TM_CCORR_NORMED相关匹配法   该方法采用乘法操作;数值越大表明匹配程度越好。...
模板匹配(目标跟踪)
最新发布
K_K_yl的博客
04-07 710
OpenCV模板匹配算法是一种在大寻找模板图像位置方法。它主要通过滑动模板图像在大进行匹配,计算模板图像与大每一个小区域的匹配度,以此来确定模板在大位置。这种方法简单、直观,适用于寻找不变形的目标。工作原理:算法将模板图像在目标图像上滑动,并在每一个位置计算模板图像和覆盖它的目标图像区域之间的相似度。通过比较这些相似度,可以确定模板图像在目标图像最匹配的位置
图像边缘检测之精确定位
我的博客
01-13 2771
针对图像,边缘较为模糊,噪声较多,却需要实现精密测量的场景,常用的边缘算子不能够很好地满足使用要求。因此,提出一种先粗定位,再提取边缘区域,最后精确定位的算法。
实现在一张寻找另一张片的目标
Y_warmth
09-09 858
SIFT特征检测算法合FLANN匹配算法
图像模板匹配算法(MATLAB)
corn1949的博客
01-30 2049
在原图像上滑动模板,计算每个位置的相似度:用模板图像在原图像上逐步滑动,每个位置计算模板和原的重叠区域的相似度。%E(X)*E(Y)取和与Cov(X,Y)成正比。当相似度达到最大时,原始图像的该位置就是模板的匹配位置寻找最佳匹配:相似度最大的位置即为最佳匹配位置,对应模板图像在原图像位置。%**********判断目标的位置并标记************
模板多目标匹配,查找所有小位置
11-14
VS2017创建的工程,利用Emgu.CV实现了一个简单的单模板多目标匹配,在大准确地找出所有小位置并返回坐标,工程由于包含了完整的Emgu.cv库所以比较大
OpenCV进行模板匹配
sgzqc的专栏
06-23 3153
本文重点介绍了在传统图像处理,如何利用模板匹配方法来进行从表情包图像寻找心动表情模板的样例,并给出了相应的代码实现。由于是传统方案,该方法的阈值选择和泛化能力都有一定的局限性,但是学习其背后的原理可以帮助我们更好的理解相关理论概念。
OpenCV使用单目标匹配从图选择最佳的匹配结果及查找重复图像实战(附Python源码)
showswoller的博客
01-21 3060
OpenCV使用单目标匹配从图选择最佳的匹配结果及查找重复图像实战(附Python源码)
基于Python+OpenCV 双目立体视觉的图像匹配与测距+源代码+文档说明
11-07
结合维视双目立体视觉测量平台 MV-VS220,通过 Python+OpenCV 设计实现一个具备图像 采集、图像匹配以及距离测量等功能的原型演示系统。系统可实现对关键环节的过程与结果的演示,以及不同算法的 性能比较。系统测试...
OpenCV.js文教程
06-13
- **模板匹配**:寻找图像的特定模式。 - **霍夫变换**:用于检测直线和圆形,常用于车牌识别等场景。 - **分水岭算法**:用于图像分割,将图像划分为多个连通区域。 - **GrabCut算法**:交互式图像分割,用于...
OpenCV-python轮廓提取与模板匹配(csdn)————程序.pdf
12-03
总结起来,OpenCV-Python提供的这些工具和方法图像分析和处理发挥着关键作用,无论是轮廓提取用于识别物体形状,还是模板匹配用于定位图像特征,它们都是计算机视觉领域不可或缺的一部分。通过熟练掌握这些技术...
OPENCV图像处理的函数说明.pdf
09-30
- **角点检测**:如`preCornerDetect()`, `cornerEigenValsAndVecs()`, `cornerMinEigenVal()`, `cornerHarris()`等函数用于寻找图像的角点,这些角点在图像变换相对稳定,适合目标识别。 2. **采样、插值和...
Opencv——图像模板匹配
杨老师的小跟班(*∩_∩*)
09-16 6168
模板匹配可以看作是对象检测的一种非常基本的形式。使用模板匹配,我们可以使用包含要检测对象的“模板”来检测输入图像的对象。
[OpenCV-Python] 24 模板匹配
yegeli的博客
02-01 327
文章目录OpenCV-Python:IV OpenCV图像处理24 模板匹配24.1 OpenCV 模板匹配24.2 多对象的模板匹配 OpenCV-Python:IV OpenCV图像处理 24 模板匹配 目标 在本节我们要学习:   1. 使用模板匹配一幅图像查找目标   2. 函数:cv2.matchTemplate(),cv2.minMaxLoc() 原理   模板匹配是用来在一副大搜寻查找模版图像位置方法OpenCV 为我们提供了函数:cv2.matchTemplate()
图像处理(8) : 模板匹配
热门推荐
QtHalcon
06-09 3万+
模板匹配指的是通过模板图像与测试图像之间的比较,找到测试图像上与模板图像相似的部分,这是通过计算模板图像与测试图像目标的相似度来实现的,可以快速地在测试图像定位出预定义的目标。匹配的主要思路是使用一个目标原型,根据它创建一个模板,在测试图像搜索与该模板图像最相似的目标,并寻找与该模板的均值或方差最接近的区域。 通过模板匹配可以得到目标的相似度,旋转角度,行列坐标,缩放大小等。 针对不同的图像特征和检测环境,有多种模板匹配算法。如何选择合适的模板匹配算法,取决于具体的图像数...
Python使用opencv实现片定位第三种方式
qq_492448446的博客
07-05 3442
Python使用opencv实现片定位第三种方式
opencv模板匹配的角度
04-30
OpenCV模板匹配是一种基于形特征相似度的图像处理算法,它可以用于找到一张的特定物体。但是,当目标物体图像的角度发生变化时,传统的模板匹配算法就会失效。为了解决这个问题,OpenCV引入了旋转模板匹配算法,也称为旋转不变模板匹配算法。 旋转模板匹配算法的基本思路是,将模板和目标物体都在一定的角度范围内旋转,并计算它们之间的相似度得分,最终找到最佳匹配的角度。具体来说,该算法将输入图像模板分别旋转一定的角度,并使用传统的模板匹配算法计算它们的相似度得分。然后,将所有的得分存储下来,并找到得分最高的那个角度作为目标物体的旋转角度。 旋转模板匹配算法的优点在于它可以处理目标物体图像任意角度的情况,并且计算时间并不会因为角度的增加而增加。这种算法可以应用于各种不同的图像处理任务,如图像识别、目标跟踪、目标检测等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • opencv(C++)图像处理 1篇
  • opencv(python)图像处理进阶教程 5篇
  • 使用skimage库进行图像处理 13篇
  • 数字图像处理入门 68篇
  • opencv(python)图像处理入门教程 32篇
  • 神经网络 2篇
  • 图像编码 2篇
  • tkinter 1篇
  • 图像特征分析 7篇
  • python 44篇
  • MySQL 3篇
  • 图形图像处理 61篇
  • photoshop 1篇
  • 文件处理 7篇
  • 职场实用 20篇
  • android 1篇
  • matlab 37篇
  • C/C++ 47篇
  • 算法 13篇
  • 黑客攻防 1篇
  • Qt way 2篇
  • STL 36篇
  • PHP 5篇
  • laravel 2篇
  • javascript 17篇
  • html5 1篇
  • linux 4篇
  • 网站搭建 7篇
  • Java 26篇
  • pygame 4篇
  • 深度学习 10篇
  • 工具使用 3篇
  • opencv 14篇
  • Image Super-Resolution 1篇
  • pytorch 10篇

最新评论

  • 最近邻插值算法 python实现

    qq_46334886: 因为循环少循环了一次,dstH-1改成dstH,dstW-1改成dstW

  • opencv 结合pyqt5 编写简单的图像处理GUI程序

    Z_0_0: 路径名不要有中文

  • 高斯滤波详解 python实现高斯滤波

    儒-桑: 这个原图有高斯噪声吗

  • 利用sobel算子提取图像的水平特征和竖直特征

    北冥鱼化为鸟: 我的两个方向的图像出来噪声好大,滤波了,还是大

  • 图像形态学运算之图像开闭运算 含python实现

    Oliver: 请问腐蚀操作的判断条件为什么是if np.sum(MF * tmp[y-1:y+2, x-1:x+2]) < 255*4: out[y, x] = 0

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • vs2019配置opencv4.3
  • 解决python安装第三方库速度很慢的问题(opencv为例)
  • pytorch 获取模型的参数数量
2020年130篇
2019年70篇
2018年143篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码塘坑seo双龙网站优化南澳网站推广南澳SEO按天计费深圳网站优化按天收费大运品牌网站设计塘坑外贸网站建设光明SEO按天扣费横岗网站推广系统塘坑网站优化排名罗湖关键词排名包年推广南联网站推广方案罗湖网站优化按天扣费同乐seo网站优化荷坳网站改版同乐百搜词包南联百度网站优化排名双龙网页制作深圳关键词按天计费东莞SEO按天计费大芬关键词排名包年推广木棉湾网站制作石岩seo深圳网站推广工具木棉湾网站优化按天计费沙井模板网站建设南山seo南山SEO按天计费深圳网站排名优化大鹏品牌网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化