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

OpenCV(Open Source Computer Vision)는 컴퓨터 비전과 이미지 처리를 위한 오픈 소스 라이브러리입니다. 이를 사용하여 이미지나 동영상에서 얼굴을 인식하는 것은 매우 간단합니다. 이번 블로그 포스트에서는 Python에서 OpenCV를 사용하여 이미지에서 동영상에서 얼굴을 인식하는 방법을 알아보겠습니다.

1. OpenCV 설치하기

먼저, Python 환경에서 OpenCV를 사용하기 위해서는 OpenCV를 설치해야 합니다. 아래의 명령어를 사용하여 OpenCV를 설치할 수 있습니다.

pip install opencv-python

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

아래의 예제 코드를 사용하여 이미지에서 얼굴을 인식해보겠습니다.

import cv2

# 이미지 불러오기
image = cv2.imread('image.jpg')

# 이미지를 흑백으로 변환
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 얼굴 인식을 위한 Haar Cascade 파일 불러오기
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# 이미지에서 얼굴 인식하기
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('Faces Detected', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위의 코드에서 image.jpg는 얼굴을 인식할 이미지 파일의 경로입니다. 먼저, 이미지를 흑백으로 변환한 후에 Haar Cascade 파일을 사용하여 얼굴을 검출합니다. 이후에는 cv2.rectangle 함수를 사용하여 인식된 얼굴 주위에 사각형을 그립니다. 마지막으로, cv2.imshow 함수를 사용하여 결과 이미지를 출력합니다.

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

동영상에서 얼굴을 인식하는 방법도 매우 유사합니다. 아래의 예제 코드를 사용하여 동영상에서 얼굴을 인식해보겠습니다.

import cv2

# 동영상 불러오기
video = cv2.VideoCapture('video.mp4')

# 얼굴 인식을 위한 Haar Cascade 파일 불러오기
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

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('Faces Detected', frame)

    # 'q' 키를 누르면 종료
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 동영상 재생 종료
video.release()
cv2.destroyAllWindows()

위의 코드에서 video.mp4는 얼굴을 인식할 동영상 파일의 경로입니다. 동영상은 cv2.VideoCapture() 함수를 사용하여 불러옵니다. 이후에는 이미지에서 얼굴을 인식하는 방법과 동일하게 얼굴을 검출하고 사각형을 그립니다. cv2.imshow() 함수를 사용하여 결과 프레임을 출력하며, q 키를 누르면 동영상 재생이 종료됩니다.

이제 OpenCV를 사용하여 이미지와 동영상에서 얼굴을 인식하는 방법에 대해 알아보았습니다. OpenCV의 다양한 기능을 활용하여 컴퓨터 비전 및 이미지 처리 작업을 수행할 수 있습니다.

참고 자료