• 模板匹配算法python与opencv、cv2模块安装


    Python用于数字图像处理的库有很多,其中一种调用opencv的(API)接口。

    opencv的官网对模板匹配的解释是:

    模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv2.matchTemplate()。它只是将模板图​​像滑动到输入图像上(就像在2D卷积中一样),然后在模板图像下比较模板和输入图像的补丁。OpenCV中实现了几种比较方法。(您可以检查文档以了解更多详细信息)。它返回一个灰度图像,其中每个像素表示该像素的邻域与模板匹配多少。
    如果输入图像的大小(WxH)和模板图像的大小(wxh),则输出图像的大小将为(W-w + 1,H-h + 1)。获得结果后,可以使用cv2.minMaxLoc()函数查找最大/最小值在哪里。将其作为矩形的左上角,并以(w,h)作为矩形的宽度和高度。该矩形是您模板的区域。

    也就是:

    1、模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域

    2、模板匹配首先要有一个模板图像T(给定的子图像)

    3、另外需要一个待检测的图像——源图像S

    4、工作方法:在检测图像上,从左到右,从上到下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性就越大。

    注意:cv2模块是cv模块的升级版本,注意在安装此模块时不能直接pip install cv2,会报错,而是应该pip install opencv-python即可。

    import cv2 as cv
    import numpy as np

    def template_demo():
    # tpl是模板图像
    tpl = cv.imread('path1/tpl.png')
    # target是源图像
    target = cv.imread('path2/lena.png')
    cv.imshow('template image', tpl)
    cv.imshow('target image', target)
    # 第一个是平方不同,第二个是相关性,第三个是相关性因子
    methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED]
    # 模板图像的宽、高
    th, tw = tpl.shape[:2]
    for md in methods:
    print(md)
    result = cv.matchTemplate(target, tpl, md)
    # 匹配程度最大的像素值,以及该像素的位置(不同的匹配方法,有不同的衡量标准)
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
    if md == cv.TM_SQDIFF_NORMED:
    tl = min_loc # tl是矩形左上角坐标
    else:
    tl = max_loc
    br = (tl[0]+tw, tl[1]+th) # 矩形框右下角坐标
    cv.rectangle(target, tl, br, (0, 0, 255), 2) # 在target图像上绘制匹配的矩形框
    cv.imshow('match-'+np.str(md), target)
    # cv.imshow('match-'+np.str(md), result)

    src = cv.imread('path3/demo.png')
    # cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
    # cv.imshow('input image', src)
    template_demo()
    cv.waitKey(0)
    cv.destroyAllWindows()

    Keep moving forwards~
  • 相关阅读:
    变形方块
    Vim编辑器设置字体高亮显示
    从命令行终端获取数值作为函数参数
    Vi编辑器的使用技巧
    iOS开发常用shell命令
    include使用技巧
    交换2个整型变量的值
    C语言位运算实现函数体
    React Native 之文件内数据操作(var、let、const、static、Props、State、this)
    React Native 城市选择(四)获取城市名称
  • 原文地址:https://www.cnblogs.com/-X-peng/p/14077150.html
Copyright © 2020-2023  润新知