이번 포스트에서는 파이썬의 Pillow
라이브러리를 사용하여 이미지에서 얼굴을 탐지하고 인식하는 방법에 대해 알아보겠습니다. Pillow
는 이미지 처리와 조작을 위한 많은 기능을 제공하는 라이브러리로, 여기서는 얼굴 탐지와 인식을 위해 OpenCV 라이브러리를 활용한 cv2
모듈과 함께 사용하겠습니다.
Pillow 설치하기
우선 Pillow를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:
pip install Pillow
또한 OpenCV를 사용하기 위해 다음 명령어로 cv2
모듈도 설치합니다:
pip install opencv-python
얼굴 탐지하기
이제 얼굴 탐지를 위한 코드를 작성해보겠습니다. 다음은 얼굴 탐지 및 인식을 위한 코드입니다:
from PIL import Image
import cv2
def detect_faces(image_path):
# 이미지 열기
image = Image.open(image_path)
# OpenCV를 이용한 얼굴 탐지
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
gray_image = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 얼굴이 탐지된 경우 박스 그리기
for (x, y, w, h) in faces:
image = cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 얼굴이 탐지된 이미지 저장
image.save("face_detected.jpg")
# 탐지된 얼굴의 개수 반환
return len(faces)
# 이미지 파일 경로 설정
image_path = "image.jpg"
# 얼굴 탐지 함수 호출
num_faces = detect_faces(image_path)
print("Detected", num_faces, "faces")
위 코드는 detect_faces
함수를 통해 이미지에서 얼굴을 탐지하고, 각 얼굴 주변에 박스를 그린 후 탐지된 얼굴의 개수를 반환합니다. 저장된 이미지 파일에는 얼굴이 탐지된 부분에 박스가 그려진 결과가 저장됩니다.
Pillow를 이용한 얼굴 인식하기
얼굴 탐지가 완료되면, 이제 각 얼굴에 대한 얼굴 인식을 진행할 수 있습니다. 다음은 얼굴 인식을 위한 코드입니다:
import face_recognition
def recognize_faces(image_path):
# 이미지 로드
image = face_recognition.load_image_file(image_path)
# 얼굴 인식
face_locations = face_recognition.face_locations(image)
face_encodings = face_recognition.face_encodings(image, face_locations)
# 인식된 얼굴 수 반환
return len(face_encodings)
# 이미지 파일 경로 설정
image_path = "face_detected.jpg"
# 얼굴 인식 함수 호출
num_faces = recognize_faces(image_path)
print("Recognized", num_faces, "faces")
위 코드는 recognize_faces
함수를 통해 이미지에서 얼굴을 인식하고, 탐지된 얼굴의 개수를 반환합니다. face_recognition
모듈을 사용하였으며, 탐지된 얼굴의 위치와 그에 대한 얼굴 인코딩 정보를 얻을 수 있습니다.
이제 위 코드를 실행해보세요. 입력 이미지에서 얼굴이 탐지되고 인식된 결과를 확인할 수 있을 것입니다.
마무리
이번 포스트에서는 Pillow을 사용하여 이미지에서 얼굴을 탐지하고 인식하는 방법에 대해 알아보았습니다. Pillow 라이브러리는 이미지 처리와 조작에 다양한 기능을 제공하므로, 다양한 애플리케이션 및 프로젝트에서 유용하게 활용될 수 있습니다.
참고로, 얼굴 인식을 위한 face_recognition
모듈은 dlib
라이브러리의 기능을 사용하기 때문에 추가적인 설치가 필요할 수 있습니다. 자세한 내용은 해당 모듈의 공식 문서를 참고하세요.
Happy coding!