opencv学习:模板匹配和argparse 模块的代码实现及优缺点

news2024/11/24 20:13:10

模板匹配

模板匹配算法(Template Matching Algorithm),这是一种在图像处理和计算机视觉领域常用的方法,用于在一个大图像中寻找一个小模板图像的位置。模板匹配算法通过滑动窗口的方式在目标图像上移动模板图像,并计算模板图像与目标图像的局部区域之间的相似度。

算法步骤

  1. 读取图像

    • kele 是目标图像,其中可能包含模板图像。
    • temple 是模板图像,即我们希望在目标图像中找到的图像。
      kele=cv2.imread('kele.png')
      temple=cv2.imread('temple.png')
  2. 获取模板尺寸

    • 使用 temple.shape[:2] 获取模板图像的高度和宽度。
      h,w=temple.shape[:2]
  3. 模板匹配操作

    • 使用 cv2.matchTemplate() 函数进行模板匹配。这个函数在目标图像上滑动模板图像,并计算每个位置的匹配度。
    • cv2.TM_CCOEFF_NORMED 是匹配方法之一,它使用标准化的相关系数来衡量匹配度。这种方法对亮度变化和对比度变化具有一定程度的鲁棒性。
      res=cv2.matchTemplate(kele,temple,cv2.TM_CCOEFF_NORMED)
  4. 找到最佳匹配位置

    • cv2.minMaxLoc() 函数用于找到匹配结果矩阵中的最小值和最大值及其位置。在这个上下文中,最大值位置 maxloc 表示最佳匹配的位置。
      minval,maxval,minloc,maxloc=cv2.minMaxLoc(res)
  5. 计算匹配区域的坐标

    • topleft 是最佳匹配的左上角坐标。
    • bottomright 是匹配区域的右下角坐标,通过将 topleft 与模板图像的尺寸相加得到。
      topleft=maxloc
      bottomright=(topleft[0]+w,topleft[1]+h)
  6. 在原图上绘制矩形框

    • 使用 cv2.rectangle() 在目标图像上绘制一个矩形框,标记出匹配区域。
      keletemple=cv2.rectangle(kele,topleft,bottomright,(0,255,0),2)
  7. 显示结果图像

    • 使用 cv2.imshow() 显示结果图像,其中包括绘制的矩形框。
      cv2.imshow('keletemple',keletemple)
      cv2.waitKey(0)

argparse 模块

argparse 模块的命令行参数解析脚本。argparse 模块用于编写用户友好的命令行接口。程序定义了一组参数,用户可以在命令行中设置这些参数的值,或者使用默认值。

  1. 导入 argparse 模块

    import argparse
  2. 创建 ArgumentParser 对象

    parser = argparse.ArgumentParser()

    这行代码创建了一个 ArgumentParser 对象,用于处理命令行参数。

  3. 添加参数

    • --serial:一个字符串类型的参数,用于指定串行端口,有一个默认值 'com5'。
    • --area:一个整数类型的参数,用于指定面积,默认值为 1500。
    • --confid:一个浮点数类型的参数,用于指定信任度,默认值为 0.8。
    • --aaa:一个整数类型的参数,有一个默认值 100。
    • -b 和 --bb:这是同一个参数的短选项和长选项,用于指定一个整数,默认值为 10。
  4. 解析命令行参数

    opt = parser.parse_args()

    这行代码解析命令行参数,并将解析后的参数存储在 opt 对象中。

  5. 访问参数值

    aa = opt.aaa
    bb = opt.bb

    这两行代码从 opt 对象中获取 --aaa--bb 参数的值。

  6. 使用示例

    假设这段代码保存在名为 script.py 的文件中,你可以在命令行中运行以下命令来传递参数:

    python script.py --serial com3 --area 2000 --confid 0.9 --aaa 150 -b 20

     7. 输出结果

模板匹配算法优缺点

1. 优点:

  • 实现简单,易于理解和编程。
  • 对于简单场景和应用,效果较好。

2. 缺点:

  • 对光照、遮挡和图像噪声敏感。
  • 计算量大,特别是在大图像或多模板的情况下。

argparse 模块优缺点

1. 优点:

  • 易于使用,可以自动生成帮助和使用说明。
  • 支持参数的类型检查和默认值设置。
  • 可以处理复杂的命令行参数结构。

2. 缺点:

  • 对于非常复杂的命令行界面,可能需要更多的定制化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2122851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构 Java DS——分享部分链表题目 (2)

前言 关于JAVA的链表,笔者已经写了两篇博客来介绍了,今天给笔者们带来第三篇,也是分享了一些笔者写过的,觉得挺好的题目,链接也已经挂上了,笔者们可以去看看 入门数据结构JAVA DS——如何实现简易的单链表(用JAVA实现)-CSDN博客 数据结构 Java DS——链表部分经典题目 (1)-C…

Vue双向数据绑定代码解读

Vue核心基础-CSDN博客 数据双向绑定原理_哔哩哔哩_bilibili 原理示意图 前置知识 reduce()方法 用于链式获取对象的属性值 Object.defineProperty()方法 Object.defineProperty(obj, prop, descriptor) obj:要定义属性的对象。prop:要定义或修改的属性…

睿考网:中级经济师报名条件中的相关工作怎么定义?

在中级经济师报考条件中,明确不同学历需要满足相关工作经验的要求,怎么看我的工作是否为相关工作呢? 1.从事经济类相关的工作岗位 也就是说考生在本单位从事的工作性质需要与经济行业相关,如本单位的财务、会计、审计、出纳等相…

原地旋转数组--189. 轮转数组

189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步:…

传授大伙如何用ai工具优化自己的代码》》拥抱机器时代》》提示词工程

之前在做数据开发时候遇到的问题数据表格批量生成建表的宏出问题了,此时只好硬着头皮写vba代码,此时您想我不会vba也不知道怎么使用但是sql语句建表格式总还是知道的那么此刻开始我们的提示词开发代码时刻 先进行具体提示词开发>>>>>>>>>…

SpringCloud nacos

**************************** 准备工作 首先准备号nacos的镜像 根据镜像创建nacos容器 nacos:container_name: nacosimage: nacos/nacos-server:v2.1.0-slimports: #需要监听三个端口- "8848:8848"- "9848:9848"- "9849:9849"privileged: tr…

Axure高效打造大屏可视化BI数据展示

在使用AxureRP软件设计大屏可视化BI数据显示模板时,我们可以遵循一系列高效的方法和步骤来确保设计的质量和效率。以下是一个详细的教程,指导如何高效地使用AxureRP进行大屏界面设计。 一、确定设计标准与分辨率 通常,大屏可视化设计以标准的…

MySQL事务【后端 13】

MySQL事务 在数据库管理系统中,事务(Transaction)是一个非常重要的概念,它确保了数据库操作的完整性和一致性。MySQL作为一种流行的关系型数据库管理系统,自然也支持事务处理。本文将深入探讨MySQL事务的基本概念、特性…

基于YOLOv8的PCB缺陷检测算法,加入一种基于内容引导注意力(CGA)的混合融合方案(一)

💡💡💡本文内容:针对基于YOLOv8的PCB缺陷检测算法进行性能提升,加入各个创新点做验证性试验。 1)提出了一种基于内容引导注意力(CGA)的混合融合方案,mAP0.5由原始的0.966提升至0.975 1.PCB缺陷…

Django 如何全局捕获异常和DEBUG

DEBUG 默认:False 一个开启、关闭调试模式的布尔值。 永远不要在 DEBUG 开启的情况下将网站部署到生产中。 调试模式的主要功能之一是显示详细的错误页面。如果你的应用程序在 DEBUG 为 True 时引发了异常,Django 会显示一个详细的回溯,包…

AplPost使用

请求get 方法 1,添加token 2,填写get 的参数 2,post方法 把对象的形式直接复制到row里面 3,delete方法 可以直接后面拼接参数

CTK框架(八):服务追踪

目录 1.简介 2.实现方式 3.具体实现 3.1.新建插件PluginA​​ 3.2.新建插件PluginB 4.服务追踪的优势 5.应用场景 6.总结 1.简介 CTK服务追踪是一种机制,用于在CTK插件框架中追踪和管理插件提供的服务。当一个插件注册了一个服务到服务注册中心后&#xff0…

SCADA|KingIOServer数据存入KingHistorian的过程记录

哈喽,你好啊,我是雷工! KingIOServer是采集数据的软件,KingHistorian是工业数据库; 最近用到KingIOServer采集到的数据存入到KingHistorian工业库,然后KingFusion再连接KingHistorian获取历史数据并曲线展示的应用功能; 以下为测试笔记; 01 软件安装 KingIOServer软…

动态代理IP池设计:打造高效网络工具

在互联网飞速发展的今天,动态代理IP池成为了网络世界中的一大法宝。无论是数据采集、网络营销还是电商运营,动态代理IP池都能提供极大的便利。今天,我们来深入探讨一下如何设计一个高效的动态代理IP池。 什么是动态代理IP池? 动…

高性能多目标进化优化算法求解DTLZ1-DTLZ9,MATLAB代码

DTLZ(Deb-Thiele-Laumanns-Zitzler)测试函数系列是多目标优化领域中一组广泛使用的基准测试问题。这些测试问题由Kalyanmoy Deb、Lothar Thiele、Marco Laumanns和Eckart Zitzler于2002年提出,旨在评估和比较多目标优化算法的性能。以下是DTL…

HTML5+CSS+JS制作中秋佳节页面

HTML5CSSJS制作中秋佳节页面 中秋节,是中国民间的传统节日。每年农历八月十五庆祝。 在中秋节这一天,人们会通过各种方式庆祝,其中最重要的活动之一就是赏月。家人团聚在一起,共同欣赏明亮的月亮。同时,吃月饼也是中秋…

【Go】-Gin框架

目录 Gin框架简介 简单示例 Gin渲染 HTML渲染 自定义模板函数 静态文件处理 使用模板继承 JSON渲染和XML渲染 获取参数 获取querystring参数 获取form参数 获取Path参数 参数绑定 文件上传 单个文件上传 参数 多个文件上传 重定向 HTTP重定向 路由重定向 …

【Tourism】Xianyang

文章目录 1、陕西省咸阳市2、清渭楼3、古渡廊桥4、古渡遗址博物馆5、文庙6、窦家BingBing面7、凤凰台8、安国寺9、福园巷子10、参考 1、陕西省咸阳市 咸阳市,陕西省辖地级市,地处陕西省关中平原中部,是中国大地原点所在地,其境东…

iPhone 16系列发布:硬件升级但创新乏力?iPhone还值得入手吗?

2024年苹果发布会如约而至,重磅推出了iPhone 16系列。然而,发布会结束后,许多科技评论员和用户不禁质疑:苹果的创新精神是否逐渐消退?从发布会的内容来看,iPhone 16在设计、性能上有所提升,但和…

软件测试之单元测试与unittest框架详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 单元测试的定义 1. 什么是单元测试? 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&…