728x90
예제
사용한 템플릿 이미지와 소스 이미지
예제 코드입니다.
import os
import cv2
import numpy as np
src_path = os.path.join('img', 'bg.png')
tpl_path = os.path.join('img', 'dino.png')
src = cv2.imread(src_path, cv2.IMREAD_GRAYSCALE)
tpl = cv2.imread(tpl_path, cv2.IMREAD_GRAYSCALE)
res = cv2.matchTemplate(src, tpl, cv2.TM_CCOEFF_NORMED)
minval, maxval, minloc, maxloc = cv2.minMaxLoc(res)
h, w = tpl.shape[:2]
dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR)
cv2.rectangle(dst, maxloc, (maxloc[0] + w, maxloc[1] + h), (0, 255, 0), 3)
tpl = cv2.resize(tpl, None, fx=2, fy=2)
cv2.imshow('tpl', tpl)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.matchTemplate(src, template, method, result=None, mask=None) -> result
-
src: 입력 이미지
-
template: 템플릿 이미지
-
method: 템플릿 비교 방법
-
result: 비교 결과 행렬(numpy.ndarray)
템플릿 매칭을 통해 나온 결과를 이용해서
사각형을 그리기 위한 시작점 좌표를 구합니다.
maxloc 이 시작점 좌표
res = cv2.matchTemplate(src, tpl, cv2.TM_CCOEFF_NORMED)
minval, maxval, minloc, maxloc = cv2.minMaxLoc(res)
cv2.rectangle() 함수는 시작점과 끝점을 인자로 받습니다.
템플릿 이미지의 Shape 와 위에서 구한 시작점 좌표를 이용해서 끝점 좌표까지 구해서 그려줍니다.
h, w = tpl.shape[:2]
dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR)
cv2.rectangle(dst, maxloc, (maxloc[0] + w, maxloc[1] + h), (0, 255, 0), 3)
'OpenCV' 카테고리의 다른 글
파이썬 OpenCV 템플릿 매칭 -3 : 크롬 공룡게임 간단 매크로 구현 (0) | 2020.08.06 |
---|---|
파이썬 OpenCV 템플릿 매칭 -2 : 크롬 공룡게임 실시간 매칭하기 (2) | 2020.08.06 |
파이썬 OpenCV 도형 검출하기 (4) | 2020.08.05 |
파이썬 OpenCV 라벨링(Labeling) (0) | 2020.07.26 |
파이썬 OpenCV 외곽선 검출(Contours) (0) | 2020.07.26 |