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

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

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    
    
    # 读取图片 big.jpg
    img = cv2.imread('big.jpg', 0)
    
    # 读取图片 smart.jpg
    template = cv2.imread('smart.jpg', 0)
    
    # rows->h, cols->w
    # h:表示矩阵的行数 
    # w:表示矩阵的列数
    # 这里是得到模板的矩阵大小
    h, w = template.shape[:2]    
    
    
    
    # 相关系数匹配方法: cv2.TM_CCOEFF
    # 1表示完美匹配, -1表示糟糕的匹配, 0表示没有任何相关性(随机序列)
    # res为一个数组(矩阵)
    res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF)
    
    # cv2.minMaxLoc:在数组中找到全局最小值和最大值
    # 返回的是 最值的位置
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    
    print(min_val)
    print(max_val)
    print(min_loc)
    print(max_loc)
    
    # 左上角 取的最大值那个的位置
    left_top = max_loc
    
    # 右下角 矩阵知道了左上角一个点后 加上长宽 就知道整个矩形了
    right_bottom = (left_top[0] + w, left_top[1] + h)
    
    
    # cv2.rectangle:画出矩形位置
    # 第一个参数:img是原图
    # 第二个参数:(x,y)是矩阵的左上点坐标
    # 第三个参数:(x+w,y+h)是矩阵的右下点坐标
    # 第四个参数:(0,255,0)是画线对应的rgb颜色
    # 第五个参数:2是所画的线的宽度
    cv2.rectangle(img, left_top, right_bottom, 255, 2)
    
    
    # plt.subplot:用于绘图 可用于图像对比
    # subplot(numRows, numCols, plotNum)
    # numRows:行
    # numCols:列
    # plotNum:指定的区域
    # 使用方式:
    #   如果 numRows = 2, numCols = 3, 那整个绘制图表样式为 2X3 的图片区域, 用坐标表示为
    #   (1, 1), (1, 2), (1, 3)
    #   (2, 1), (2, 2), (2, 3)
    #   当 plotNum = 3 时, 表示的坐标为(1, 3), 即第一行第三列的子图
    # 原文:https://www.cnblogs.com/xiaoboge/p/9683056.html
    # plt.subplot(1,2,1):1行2列第1个区域 坐标(1,1)
    plt.subplot(1,2,1)
    
    # plt.imshow:图像绘画
    # matplotlib.pyplot.imshow(X, cmap=None)
    # X:要绘制的图像或数组
    # cmap:颜色图谱 常用 plt.cm.gray plt.cm.jet
    plt.imshow(res, cmap='gray')
    plt.title('pic 1')
    plt.xticks([])# x轴
    plt.yticks([])# y轴
    
    # plt.subplot(1,2,2):1行2列第2个区域 坐标(1,2)
    plt.subplot(1,2,2), plt.imshow(img, cmap='gray')
    plt.title('pic 2'), plt.xticks([]), plt.yticks([])
    plt.show()

    测试环境:

      win7 64,python 3.7.3

    安装的那些包,以前就装了 前面文章应该有安装

    用到的测试图片:

    big.jpg

    smart.jpg 

  • 相关阅读:
    2021.2.5 学习总结
    2021.2.1 学习总结
    2021.2.4 学习总结
    学习:C#中struct与class的区别(转)
    学习:DirectoryEntry::Path 属性(winnt、LDAP、IIS)(转)
    学习:Asp.net页面传值总结(转)
    学习:WinForm分页控件(转)
    学习:c#中抽象类和接口的相同点跟区别(转)
    学习:C#中获取当前路径的几种方法(转)
    记录:new关键字、new修饰符、new约束
  • 原文地址:https://www.cnblogs.com/guxingy/p/12199681.html
Copyright © 2011-2022 走看看