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

模板匹配

模板匹配算法(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. 缺点:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值