[python] PIL로 얼굴 인식하기

Python의 PIL(Python Imaging Library) 모듈을 사용하여 이미지에서 얼굴을 인식하는 방법에 대해 알아보겠습니다.

필요한 패키지 설치

먼저, 필요한 패키지를 설치해야 합니다. 다음 명령어를 사용하여 pillow 패키지를 설치합니다.

pip install pillow

이미지 로딩 및 얼굴 인식

  1. pillow 모듈을 가져옵니다.
    from PIL import Image
    
  2. 이미지 파일을 열고, Image.open() 함수를 사용하여 이미지 객체를 생성합니다.
    image = Image.open("image.jpg")
    
  3. 얼굴 인식을 위해 haarcascade_frontalface_default.xml 파일이 필요합니다. 해당 파일을 직접 다운로드하여 프로젝트 폴더에 저장합니다.

  4. haarcascade_frontalface_default.xml 파일을 사용하여 얼굴을 인식하는 CascadeClassifier 객체를 생성합니다. ```python from PIL import Image import cv2

face_cascade = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)


5. 이미지를 그레이스케일로 변환한 후, `face_cascade.detectMultiScale()` 함수를 사용하여 이미지에서 얼굴을 인식합니다.
```python
gray = cv2.cvtColor(np.array(image), cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
  1. faces 배열에는 인식된 얼굴의 좌표(x, y, width, height)가 저장되어 있습니다. 이를 활용하여 원본 이미지에 사각형을 그려 얼굴을 표시합니다.
    for (x, y, width, height) in faces:
     cv2.rectangle(image, (x, y), (x+width, y+height), (0, 255, 0), 3)
    
  2. 최종적으로 얼굴이 표시된 이미지를 출력합니다.
    cv2.imshow("Faces", image)
    cv2.waitKey(0)
    

예제 코드

아래는 위에서 설명한 내용을 포함한 예제 코드입니다.

from PIL import Image
import cv2
import numpy as np

image = Image.open("image.jpg")

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

gray = cv2.cvtColor(np.array(image), cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)

for (x, y, width, height) in faces:
    cv2.rectangle(image, (x, y), (x+width, y+height), (0, 255, 0), 3)

cv2.imshow("Faces", image)
cv2.waitKey(0)

얼굴 인식을 위해 예제 이미지(image.jpg)와 haarcascade_frontalface_default.xml 파일을 준비하고, 위의 예제 코드를 실행해보세요.

참고 자료