Python 模板匹配 匹配一个

Posted guxingy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 

以上是关于Python 模板匹配 匹配一个的主要内容,如果未能解决你的问题,请参考以下文章

使用Python+OpenCV进行图像模板匹配(Match Template)

Python,opencv匹配模板错误

循环通过 python 正则表达式匹配

Python 模板匹配 匹配一个

如何计算模板匹配检测到的对象数量?

使用Python,OpenCV进行模板匹配单对象多对象及多尺度模板匹配