본문으로 바로가기

Haar Cascade Classifiers

  • 2001년 Paul Viola 와 Michael Jones 가 제안한 하르기반 다단계 분류기이다.
  • 다수의 positive 이미지와 negative 이미지를 트레이닝 시켜 만들어졌다.
  • 여러 개의 검출기를 순차적으로 사용해서 Cascade(다단계) 란 용어가 붙여졌다.

 

예제

 

아래 링크 보시면 pretrained 된 다양한 검출 XML 파일들을 제공하고 있습니다.

 

opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

 

 

 

결과 부터 보시면 미리 pretrained 된 XML 파일들을 제공하고 있으며 이를 이용하여 다음과 같은 검출이 가능합니다.

 

눈 검출

 

얼굴 검출

 

 

예제 코드

 

위 링크를 통해 XML 파일을 다운로드 해서 사용하시면 됩니다.

 

눈 검출

import os
import cv2
import numpy as np

path_1 = os.path.join('dt_img', 'kim.png')

src = cv2.imread(path_1)
classifier = cv2.CascadeClassifier('eye.xml')
faces = classifier.detectMultiScale(src)

for (x, y, w, h) in faces:
    center = x + int(w/2), y + int(h/2)
    radius = int(w/2)
    cv2.circle(src, center, radius, (0, 255, 0), 3)

cv2.imshow('src', src)

cv2.waitKey()
cv2.destroyAllWindows()

 

얼굴 검출

import os
import cv2
import numpy as np

path = os.path.join('dt_img', 'kim2.jpg')

src = cv2.imread(path)
face_classifier = cv2.CascadeClassifier('face.xml')

faces = face_classifier.detectMultiScale(src)

for (x, y, w, h) in faces:
    center = x + int(w/2), y + int(h/2)
    radius = int(w/2)
    cv2.circle(src, center, radius, (0, 255, 0), 3)

cv2.imshow('src', src)

cv2.waitKey()
cv2.destroyAllWindows()