zoukankan      html  css  js  c++  java
  • Python 模板匹配 匹配多个 识别多个图形

    原文:https://www.cnblogs.com/gezhuangzhuang/p/10724769.html

    原文:https://www.cnblogs.com/FHC1994/p/9123393.html

    原文:https://blog.csdn.net/qq_41603898/article/details/82219291

     识别技巧:

      小图的选择,尽可能的选择最核心的部分,要保证大图里面每个元素有包含了小图

      小图特点:小、每个图都能匹配到、取核心部分

    匹配的几种方式:

      1、TM_SQDIFF:平方差匹配;
        TM_SQDIFF_NORMED:标准平方差匹配。
        利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大。

      2、TM_CCORR:相关性匹配;
        TM_CCORR_NORMED:标准相关性匹配。
        采用模板和图像间的乘法操作,数越大表示匹配程度较高, 0表示最坏的匹配效果。

      3、TM_CCOEFF:相关性系数匹配;
        TM_CCOEFF_NORMED:标准相关性系数匹配。
        将模版对其均值的相对值与图像对其均值的相关值进行匹配,
        1表示完美匹配,-1表示糟糕的匹配,0表示没有任何相关性(随机序列)。

    总结:随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(同时也意味着越来越大的计算代价)。

    说明:

      原图(大图):big.jpg

      模板(小图):smart.jpg

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    
    # 原文:https://www.cnblogs.com/gezhuangzhuang/p/10724769.html
    # 原文:https://blog.csdn.net/qq_21840201/article/details/85084621
    
    # 1. 读入原图和模板
    img_rgb = cv2.imread('big.jpg')
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    template = cv2.imread('smart.jpg', 0)
    h, w = template.shape[:2]
    
    # 归一化平方差匹配
    res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
    threshold = 0.8
    
    
    # 返回res中值大于0.8的所有坐标
    # 返回坐标格式(col,row) 注意:是先col后row 一般是(row,col)!!!
    loc = np.where(res >= threshold)
    
    # loc:标签/行号索引 常用作标签索引
    # iloc:行号索引
    # loc[::-1]:取从后向前(相反)的元素
    # *号表示可选参数
    for pt in zip(*loc[::-1]):
        right_bottom = (pt[0] + w, pt[1] + h)
        print(pt)
        cv2.rectangle(img_rgb, pt, right_bottom, (0, 0, 255), 2)
    
    # 保存处理后的图片
    cv2.imwrite('res.png', img_rgb)
    
    
    
    # 显示图片 参数:(窗口标识字符串,imread读入的图像)
    cv2.imshow("test_image", img_rgb)
    
    # 窗口等待任意键盘按键输入 0为一直等待 其他数字为毫秒数
    cv2.waitKey(0)
    
    # 销毁窗口 退出程序
    cv2.destroyAllWindows()

    用到的图片:

    big.jpg

    smart.jpg

      

  • 相关阅读:
    Iscroll滑动无效
    原生js 无缝滚动组件
    原生 js dialog弹窗组件
    html5 历史管理
    html5拖拽属性
    highcharts 数据图设置X轴间隔显示效果
    highcharts柱状图含有正负柱设置不同颜色的方法
    移动端滑动插件 swiper
    千分位添加和去掉方法
    dubbo常用类和路径
  • 原文地址:https://www.cnblogs.com/guxingy/p/12197659.html
Copyright © 2011-2022 走看看