[python] OpenCV를 사용하여 이미지에서 동영상에서 사람 얼굴 인식하기

이미지와 동영상에서 사람 얼굴을 인식하는 것은 컴퓨터 비전 분야에서 매우 중요한 작업입니다. OpenCV는 이러한 작업을 수행하는 데 도움이 되는 강력한 라이브러리입니다. 이제 OpenCV를 사용하여 이미지와 동영상에서 얼굴을 인식하는 방법을 알아보겠습니다.

1. OpenCV 설치하기

OpenCV를 사용하기 위해 먼저 설치해야 합니다. Python 사용자라면 터미널에서 다음 명령을 실행하여 OpenCV를 설치할 수 있습니다.

pip install opencv-python

2. 이미지에서 얼굴 인식하기

이제 OpenCV를 사용하여 이미지에서 얼굴을 인식하는 예제 코드를 작성해보겠습니다.

import cv2

# 얼굴 인식을 위한 분류기(Cascade Classifier) 로드
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# 이미지 로드
image = cv2.imread('image.jpg')

# 그레이스케일로 변환
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 얼굴 인식
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# 얼굴 주변에 사각형 그리기
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 3)

# 결과 이미지 출력
cv2.imshow('Face Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

이 코드는 haarcascade_frontalface_default.xml 파일을 사용하여 이미지에서 얼굴을 인식합니다. 이미지를 로드하고 그레이스케일로 변환한 후, detectMultiScale 메소드를 사용하여 얼굴을 인식합니다. 인식된 얼굴 주변에 사각형을 그리고 결과 이미지를 출력합니다.

3. 동영상에서 얼굴 인식하기

이제 OpenCV를 사용하여 동영상에서 얼굴을 인식하는 예제 코드를 작성해보겠습니다.

import cv2

# 얼굴 인식을 위한 분류기(Cascade Classifier) 로드
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# 동영상 로드
video = cv2.VideoCapture('video.mp4')

# 프레임 별로 얼굴 인식
while True:
    # 프레임 읽기
    ret, frame = video.read()

    if not ret:
        break

    # 그레이스케일로 변환
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 얼굴 인식
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    # 얼굴 주변에 사각형 그리기
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 3)

    # 결과 동영상 출력
    cv2.imshow('Face Detection', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 리소스 해제
video.release()
cv2.destroyAllWindows()

이 코드는 마찬가지로 haarcascade_frontalface_default.xml 파일을 사용하여 동영상에서 얼굴을 인식합니다. 동영상을 프레임 단위로 읽고, 그레이스케일로 변환한 후 얼굴을 인식하여 사각형을 그립니다. 인식된 동영상을 출력하며, 키보드에서 ‘q’를 누르면 종료됩니다.

위의 예제 코드를 실행해보면 이미지와 동영상에서 얼굴을 성공적으로 인식하는 것을 확인할 수 있습니다. OpenCV를 사용하면 얼굴 인식을 비롯한 다양한 컴퓨터 비전 작업을 쉽게 수행할 수 있습니다.

참고 자료