OpenCV Python 模板匹配

OpenCV Python 模板匹配

模板匹配技术用于检测与样本或模板图像匹配的图像中的一个或多个区域。

OpenCV中的Cv.matchTemplate()函数 用于此目的,相应的命令如下:

cv.matchTemplate(image, templ, method)

其中,image是要定位模板图案的输入图像。method参数可以取以下值之一−

  • cv.TM_CCOEFF,
  • cv.TM_CCOEFF_NORMED, cv.TM_CCORR,
  • cv.TM_CCORR_NORMED,
  • cv.TM_SQDIFF,
  • cv.TM_SQDIFF_NORMED

该方法在输入图像上滑动模板图像。这类似于卷积过程,并比较模板图像下的输入图像的模板和补丁。

返回一个灰度图像,每个像素表示它与模板的匹配程度。如果输入图像大小为(WxH),模板图像大小为(wxh),输出图像的大小为(W-w+1, H-h+1)。因此,该矩形是您的模板区域。

示例

在下面的示例中,使用一张带有印度板球运动员Virat Kohli脸的图像作为要与另一张图像进行匹配的模板,该图像显示了他与另一位印度板球运动员M.S.Dhoni的合影。

以下程序使用80%的阈值值,并在匹配的脸周围绘制一个矩形−

import cv2
import numpy as np

img = cv2.imread('Dhoni-and-Virat.jpg',1)
cv2.imshow('Original',img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

template = cv2.imread('virat.jpg',0)
cv2.imshow('Template',template)
w,h = template.shape[0], template.shape[1]

matched = cv2.matchTemplate(gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8

loc = np.where( matched >= threshold)

for pt in zip(*loc[::-1]):
   cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0,255,255), 2)

cv2.imshow('Matched with Template',img)

输出

以下是原始图像、模板和匹配结果的图像:

原始图像

OpenCV Python 模板匹配

以下是 模板 的格式:

OpenCV Python 模板匹配

模板匹配后的图像如下所示: 在与模板匹配时

OpenCV Python 模板匹配

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程