템플릿매칭

매일 공부(ML)·2021년 12월 20일
0

OPEN CV

목록 보기
44/45

템플릿 매칭

이해하기

템플릿 매칭(Template matching)

  • 입력 영상에서 (작은 크기의) 템플릿 영상과 일치하는 부분을 찾는 기법입니다.

  • 템플릿: 찾을 대상이 되는 작은 영상. 패치(patch)입니다.

템플릿매칭 함수

cv2.matchTemplate(image, templ, method, result=None, mask=None) -> result

• image: 입력 영상. 8비트 또는 32비트.

• templ: 템플릿 영상. image보다 같거나 작은 크기, 같은 타입

• method: 비교 방법. cv2.TM_으로 시작하는 플래그 지정

  • result: 비교 결과 행렬. numpy.ndarray. dtype=numpy.float32.
    image의 크기가 W  H 이고, templ의 크기가 w  h 이면
    result 크기는 (W - w + 1)  (H - h +1).

예제

src = cv2.imread('circuit.bmp', cv2.IMREAD_GRAYSCALE)
templ = cv2.imread('crystal.bmp', cv2.IMREAD_GRAYSCALE)

noise = np.zeros(src.shape, np.int32)
cv2.randn(noise, 50, 10)
src = cv2.add(src, noise, dtype=cv2.CV_8UC3)

res = cv2.matchTemplate(src, templ, cv2.TM_CCOEFF_NORMED)
res_norm = cv2.normalize(res, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)

_, maxv, _, maxloc = cv2.minMaxLoc(res)

th, tw = templ.shape[:2]
dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR)
cv2.rectangle(dst, maxloc, (maxloc[0] + tw, maxloc[1] + th), (0, 0, 255), 2)

profile
성장을 도울 아카이빙 블로그

0개의 댓글