고양이 얼굴(구찌) 찾기 (이미지 매칭, 탬플릿 매칭)

  1. 이미지 매칭 : 두개의 객체 이미지가 형태가 같은지를 비교하는 것
    이미지 -> 숫자 <- (값, 평균값, 해싱 평균값...) -> 숫자 ->이미지

    해싱 평균값 이용한 이미지 매칭 : 0,1로 변환해서 비교 한다. (2진)
    이미지 크기 축소 -> 이미지 평균값을 구함
    -> 평균값 < 픽셀값 = 1로변환 or 평균값 > 픽셀값 = 0으로변환

  2. 템플릿 매칭 : 선 추출을 기본으로 영역을 잡아서 찾아내는 기법을 말한다.
    minMaxLoc() / matchTemplate()
    matchTemplate (mage,templ,result,method, mask = noArray() )

구찌사진에서 얼굴을 찾아보자

이전에 구찌 얼굴을 trim해놓은게 있었으니 그 사진을 원본사진에서 찾게 만들어보자.

import cv2
import numpy as np
from matplotlib import pyplot as plt


img = cv2.imread('c:\\myimg\\gujji.jpg') #원본사진 (이미지1
img_gray = cv2.imread('c:\\myimg\\gujji.jpg',0) #흑백
# img_gray = cv2.cvtColor(img,0)
template = cv2.imread('c:\\myimg\\temp\\gujji_numpy_trim2.png',0) #이미지2

w,h = template.shape[::-1]

res= cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.9

loc = np.where (res >= threshold)

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

cv2.imwrite('c:\\myimg\\team_res.png',img)


team_res.png (출력값)


구찌원본


구찌얼굴만 자른 사진

좋은 웹페이지 즐겨찾기