캐스케이드 분류기는 Object Detection이 가능한 OpenCV의 대표적인 API이다. 초기에는 얼굴 인식을 위한 목적으로 만들어졌고, 최근에는 대부분의 물체 인식까지 가능하다. OpenCV는 얼굴 인식에 대해 훈련된 데이터(haarcascade)를 XML 형태로 제공한다. OpenCV의 sources/data/haarcascades 폴더 내에 포함된 파일로 얼굴 인식이 가능하다.
Haarcasacade를 이용한 얼굴 인식
import cv2
import numpy as np
img = cv2.imread('faces.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Cascade 분류기 생성
cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 얼굴 검출
face = cascade.detectMultiScale(gray)
for (x,y,w,h) in face:
cv2.rectangle(img, (x,y), (x+w, y+h), (0,255,0), 1)
cv2.imshow("Face detect", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
캐스케이드 분류기를 생성하는 cv2.CascadeClassifier()는 검출기 파일을 인자로 사용하며, detectMultiScale에 이미지를 인자로 지정하면 분류기에 해당하는 검출이 이루어진다. 얼굴이 아닌 눈을 검출하려면 haarcascade_eye.xml 파일을 사용하는 등 원하는 검출 부위에 따라 파일을 선택하면 된다. haarcascade는 얼굴 검출을 목적으로 개발되었지만, 출력 결과처럼 예상하지 못했던 부분에서 얼굴이라고 인식된 부분이 있는 것으로 보아 개선될 필요가 있다고 느껴진다.
* Reference
728x90
반응형
'데이터 분석 & 시각화 > OpenCV' 카테고리의 다른 글
[OpenCV Practice 07] 색공간 추적하기 (0) | 2020.08.19 |
---|---|
[OpenCV Practice 06 - 2] 이미지 비트연산 (0) | 2020.08.19 |
[OpenCV Practice 06 - 1] 이미지 연산과 블랜딩 (0) | 2020.08.13 |
[OpenCV Practice 05] 이미지 속성과 관심 영역 지정(ROI) (0) | 2020.08.12 |
[OpenCV Practice 04] 트랙바 (Trackbar) (0) | 2020.08.11 |
최근댓글