OpenCV——10模板匹配

OpenCV——10模板匹配

模板匹配

  • 模板匹配的基本原理
  • OpenCV相关方法使用

模板匹配的基本原理

  • 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域,所以模板匹配首先需要一个模板图像T(给定的子图像),另外需要一个待检测的图像——源图像S
  • 工作方法,在待检测图像上,从左往右,从上往下计算模板图像与重叠子图像的匹配程度,匹配程度越大,两者相同的可能性就越大

OpenCV相关方法使用

# -*- coding:utf-8 -*-
import cv2 as cv
import numpy as np

def template_demo():
    tpl = cv.imread("D:/javaopencv/tpl.png")
    target = cv.imread("D:/javaopencv/test1.png")
    cv.imshow("template image", tpl)
    cv.imshow("target image", target)
    methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED]
    th, tw = tpl.shape[:2]
    for md in methods:
        print(md)
        result = cv.matchTemplate(target, tpl, md)
        min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
        if md == cv.TM_SQDIFF_NORMED:
            tl = min_loc
        else:
            tl = max_loc
        br = (tl[0]+tw, tl[1]+th);
        cv.rectangle(target, tl, br, (0, 0, 255), 2)
        #cv.imshow("match-"+np.str(md), target)
        cv.imshow("match-" + np.str(md), result)


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/demo.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
template_demo()
cv.waitKey(0)

cv.destroyAllWindows()

你可能感兴趣的:(#,OpenCV)