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

发表于:2017-9-22 12:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王彦平    来源:51Testing软件测试网采编

  本篇文章介绍使用Python和OpenCV对图像进行模板匹配和识别。模板匹配是在图像中寻找和识别模板的一种简单的方法。以下是具体的步骤及代码。
  首先导入所需库文件,numpy和cv2。
  Source code  
  #导入所需库文件
  import cv2
  import numpy as np
  然后加载原始图像和要搜索的图像模板。OpenCV对原始图像进行处理,创建一个灰度版本,在灰度图像里进行处理和查找匹配。然后使用相同的坐标在原始图像中进行还原并输出。
  Source code  
  #加载原始RGB图像
  img_rgb = cv2.imread("photo.jpg")
  #创建一个原始图像的灰度版本,所有操作在灰度版本中处理,然后在RGB图像中使用相同坐标还原
  img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
   
  #加载将要搜索的图像模板
  template = cv2.imread('face.jpg',0)
  #记录图像模板的尺寸
  w, h = template.shape[::-1]
  这里我们分别输出并查看原始图像,原始图像的灰度版本,以及图像模板。


  Source code  
  #查看三组图像(图像标签名称,文件名称)
  cv2.imshow('rgb',img_rgb)
  cv2.imshow('gray',img_gray)
  cv2.imshow('template',template)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  使用matchTemplate在原始图像中查找并匹配图像模板中的内容,并设置阈值。
  Source code  
  #使用matchTemplate对原始灰度图像和图像模板进行匹配
  res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
  #设定阈值
  threshold = 0.7
  #res大于70%
  loc = np.where( res >= threshold)
  匹配完成后在原始图像中使用灰度图像的坐标对原始图像进行标记。
  Source code  
  #使用灰度图像中的坐标对原始RGB图像进行标记
  for pt in zip(*loc[::-1]):
      cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7,249,151), 2)
  #显示图像    
  cv2.imshow('Detected',img_rgb)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  以下为完整代码:
  Source code  
  def mathc_img(image,Target,value):
      import cv2
      import numpy as np
      img_rgb = cv2.imread(image)
      img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
      template = cv2.imread(Target,0)
      w, h = template.shape[::-1]
      res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
      threshold = value
      loc = np.where( res >= threshold)
      for pt in zip(*loc[::-1]):
          cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7,249,151), 2)   
      cv2.imshow('Detected',img_rgb)
      cv2.waitKey(0)
      cv2.destroyAllWindows()
  Source code  
  image=("photo.jpg")
  Target=('face.jpg')
  value=0.9
  mathc_img(image,Target,value)
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号