hotamul의 개발 이야기

[Python] OpenCV Face Detection 본문

Dev./Python

[Python] OpenCV Face Detection

hotamul 2023. 1. 1. 16:59

Github - OpenCV에서 data/haarcascades/haarcascade_frontalface*.xml 이름의 파일들이 있는데 이 xml 파일을 복사/다운로드 해서 아래와 같이 얼굴 인식을 테스트 해볼 수 있다.

저는 haarcascade_frontalface_default.xml을 이용해서 진행했다.


# detectMultiScale Signature
cv.CascadeClassifier.detectMultiScale(image\[, scaleFactor\[, minNeighbors\[, flags\[, minSize\[, maxSize]]]]] -> objects

참고: OpenCV - CascadeClassifier

detectMultiScale 메소드 인자인 scaleFactorminNeighbors를 적당히 조절하고 cv2.rectangle 메소드를 이용해 해당 인식된 부분을 표시했다.

import numpy as np
import cv2

# load image
img = cv2.imread('./asian_friends.jpeg')
# show
# cv2.imshow('friends', img)
# cv2.waitKey(0)
# cv2.destroyAllWindows()

# load cascade classifier
haar = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
image = img.copy()

# step-1: convert image to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# step-2: apply grayscale image to cascade classifier
face_rects = haar.detectMultiScale(gray, 1.08, 3)
# step-3: draw bounding box
for x, y, w, h in face_rects:
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow('detected faces',image)
cv2.waitKey()
cv2.destroyAllWindows()

모든 경우를 인식하지는 못하는 것 같다.

Comments