OpenCV中的模板匹配

这篇具有很好参考价值的文章主要介绍了OpenCV中的模板匹配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenCV中的模板匹配

模板匹配是一项常见的计算机视觉任务,其目的是从输入图像中找到与给定模板最相似的部分。在OpenCV中,我们可以使用模板匹配算法来识别某个图案或对象在另一个图像中的位置。本文将介绍如何使用OpenCV进行模板匹配,并提供相应的源代码。

1.读取图像和模板
想要进行模板匹配,我们首先需要准备一张待匹配的图像和一个模板图像。在OpenCV中,我们可以使用cv2.imread()方法读取图像文件。

import cv2
import numpy as np

# 读取图像和模板
img = cv2.imread('test_image.jpg',0)
template = cv2.imread('template.jpg',0)

2.执行模板匹配
在OpenCV中,可以使用cv2.matchTemplate()函数来执行模板匹配。该函数将输入图像和模板作为输入,并返回一张灰度图像,其中每个像素表示输入图像中对应区域与模板的匹配程度。匹配程度越高,像素值越大。

# 模板匹配
result = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)

3.找到最佳匹配
在完成模板匹配后,我们需要找到输入图像中与模板最匹配的位置。为了实现这一点,我们可以使用cv2.minMaxLoc()函数,该函数会从给定图像中找到最大值和最小值的位置。

# 找到最佳匹配
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)

# 在原图中绘制矩形框
cv2.rectangle(img,top_left, bottom_right, 255, 2)

完整代码如下:

import cv2
import numpy as np

# 读取图像和模板
img = cv2.imread('test_image.jpg',0)
template = cv2.imread('template.jpg',0)
w, h = template.shape[::-1]

# 模板匹配
result = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)

# 找到最佳匹配
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)

# 在原图中绘制矩形框
cv2.rectangle(img,top_left, bottom_right, 255, 2)

# 显示结果
cv2.imshow('Matched image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

总结
本文介绍了如何使用OpenCV进行模板匹配,并提供了相应的源代码。通过使用模板匹配算法,我们可以在输入图像中精确定位与给定模板最相似的区域,这对于很多计算机视觉应用来说是非常有用的技术。文章来源地址https://www.toymoban.com/news/detail-741423.html

到了这里,关于OpenCV中的模板匹配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv——图像模板匹配

    什么是模板匹配呢? 看到这里大家是否会觉得很熟悉的感觉涌上心头!在人脸识别是不是也会看见 等等。 模板匹配可以看作是对象检测的一种非常基本的形式。使用模板匹配,我们可以使用包含要检测对象的“模板”来检测输入图像中的对象。 参数:(img: 原始图像、

    2024年02月16日
    浏览(40)
  • OpenCV(十九):模板匹配

    1.模板匹配:      OpenCV提供了一个模板匹配函数,用于在图像中寻找给定模板的匹配位置。 2.图像模板匹配函数matchTemplate  void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method, InputArray mask = noArray() ); image:待模板匹配的原图像,图像数据类型为CV 8U和CV 32F两者中

    2024年02月09日
    浏览(43)
  • 用OpenCV进行模板匹配

    今天我们来研究一种传统图像处理领域中对象检测和跟踪不可或缺的方法——模板匹配,其主要目的是为了在图像上找到我们需要的图案,这听起来十分令人兴奋。 所以,事不宜迟,让我们直接开始吧! 模板匹配的算法的核心十分简单:它将模板与源图像中的每个部分进行

    2024年02月10日
    浏览(43)
  • opencv#27模板匹配

         例如给定一张图片,如上图大矩阵所示,然后给定一张模板图像,如上图小矩阵。      我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域,通过比较灰色区域中的内容与模板中

    2024年01月23日
    浏览(45)
  • 【OpenCV】第十五章: 模板匹配

    第十五章: 模板匹配 模板匹配就是在给定的图片中查找和模板最相似的区域。 实现的方法是:将模板在图片上滑动(从左向右,从上向下),遍历所有滑窗,计算匹配度,将所有计算结果保存在一个矩阵种,并将矩阵中匹配度最高的值作为匹配结果。 一、单模板匹配 1、匹配函

    2024年02月02日
    浏览(38)
  • 008 OpenCV matchTemplate 模板匹配

    目录 一、环境 二、模板匹配算法原理 三、代码演示 本文使用环境为: Windows10 Python 3.9.17 opencv-python 4.8.0.74 cv.matchTemplate 是OpenCV库中的一个函数,用于在图像中查找与模板匹配的特征。它的主要应用场景是在图像处理、计算机视觉和模式识别等领域。 算法原理: cv.matchTempl

    2024年02月05日
    浏览(39)
  • OpenCV(11):模板匹配实例讲解

    在OpenCV中,模板匹配是一种图像处理技术,用于在一个大的图像中查找和定位一个小的目标图像(也称为模板)。 通俗而言,就是通过一张图片找到和另一张图片相似的部分。 从此章开始,opencv系列所有的之后更新的博客都会更注重实际应用,而不是仅仅简单讲解一个小方

    2024年02月04日
    浏览(36)
  • OPENCV C++(十二)模板匹配

    正常模板匹配函数  这里0代表的是方法,一般默认为0就ok  img是输入图像 templatee是模板 resultmat是输出 对于输出的说明: 就是说result图像中的每一个点的值代表了一次相似度比较结果。  如图可知,模板在待测图像上每次在横向或是纵向上移动一个像素,并作一次比较计算

    2024年02月13日
    浏览(41)
  • opencv 多角度模板匹配

    总结一下实现多角度模板匹配踩的坑 一 、多角度匹配涉及到要使用mask,首先opencv matchTemplateMask自带的源码如下: 可以看到使用用了四次dft来计算卷积,目标图像要与mask卷三次,来计算目标图像在模板区域内的和,平方和。其中最后一次CCorr(I, mask2)可以省略掉,它跟CCorr(I

    2024年02月07日
    浏览(44)
  • opencv直方图与模板匹配

    直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img] channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包