原文: https://pythonspot.com/object-detection-with-templates/

模板匹配是一种用于查找与补丁(模板)相似的图像区域的技术。

它的应用可以是机器人或制造业。

简介

补丁是具有某些功能的小图像。 模板匹配的目的是在图像中找到补丁/模板。

使用模板进行对象检测 - 图1

与 OpenCV 和 Python 匹配的模板。 模板(左),结果图像(右)

下载代码

要找到它们,我们都需要:

  • 源图像(S:在其中查找匹配项的空间

  • 模板图像(T:模板图像

模板图像T在源图像S上滑动(在源图像上移动),并且程序尝试使用统计信息查找匹配项。

模板匹配示例

让我们看一下代码:

  1. import numpy as np
  2. import cv2
  3. image = cv2.imread('photo.jpg')
  4. template = cv2.imread('template.jpg')
  5. # resize images
  6. image = cv2.resize(image, (0,0), fx=0.5, fy=0.5)
  7. template = cv2.resize(template, (0,0), fx=0.5, fy=0.5)
  8. # Convert to grayscale
  9. imageGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  10. templateGray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
  11. # Find template
  12. result = cv2.matchTemplate(imageGray,templateGray, cv2.TM_CCOEFF)
  13. min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
  14. top_left = max_loc
  15. h,w = templateGray.shape
  16. bottom_right = (top_left[0] + w, top_left[1] + h)
  17. cv2.rectangle(image,top_left, bottom_right,(0,0,255),4)
  18. # Show result
  19. cv2.imshow("Template", template)
  20. cv2.imshow("Result", image)
  21. cv2.moveWindow("Template", 10, 50);
  22. cv2.moveWindow("Result", 150, 50);
  23. cv2.waitKey(0)

说明

首先,我们使用imread()加载源图像和模板图像。我们调整它们的大小并将其转换为灰度以便更快地进行检测:

  1. image = cv2.imread('photo.jpg')
  2. template = cv2.imread('template.jpg')
  3. image = cv2.resize(image, (0,0), fx=0.5, fy=0.5)
  4. template = cv2.resize(template, (0,0), fx=0.5, fy=0.5)
  5. imageGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  6. templateGray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)

我们使用cv2.matchTemplate(image, template, method)方法查找图像中最相似的区域。第三个参数是统计方法

使用模板进行对象检测 - 图2

为您的应用选择正确的统计方法。TM_CCOEFF(右),TM_SQDIFF(左)

此方法具有六个匹配方法:CV_TM_SQDIFFCV_TM_SQDIFF_NORMEDCV_TM_CCORRCV_TM_CCORR_NORMEDCV_TM_CCOEFFCV_TM_CCOEFF_NORMED

这是完全不同的统计比较方法

最后,我们获得矩形变量并显示图像。

局限性

模板匹配不是比例不变的,也不是旋转不变的。 这是一种非常基本和直接的方法,可在其中找到最相关的区域。 因此,这种对象检测方法取决于您要构建的应用程序的类型。 对于非比例和旋转变化的输入,此方法效果很好。

您可能会喜欢:机器人技术使用级联的汽车跟踪。

下载计算机视觉示例和课程