[파이썬] opencv-python 얼굴 인식 및 추적

이번 포스트에서는 OpenCV-Python을 사용하여 얼굴을 인식하고 추적하는 방법을 알아보겠습니다.

OpenCV-Python은 오픈소스 컴퓨터 비전 라이브러리인 OpenCV의 파이썬 버전입니다. 이 라이브러리를 사용하면 이미지나 동영상에서 얼굴을 인식하고 추적하는 기능을 구현할 수 있습니다.

1. OpenCV-Python 설치하기

먼저 OpenCV-Python을 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install opencv-python

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

먼저, 이미지에서 얼굴을 인식하는 방법을 알아보겠습니다. 아래 코드는 이미지에서 얼굴을 인식하고 사각형으로 표시하는 예제입니다.

import cv2

def detect_face(image_path):
    # Haar Cascade 분류기 로드
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

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

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

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

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

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

# 이미지 파일 경로
image_path = 'face_image.jpg'

# 얼굴 인식
detect_face(image_path)

3. 비디오에서 얼굴 인식 및 추적하기

이제 비디오에서 얼굴을 인식하고 추적하는 방법에 대해 알아보겠습니다. 아래 코드는 비디오에서 얼굴을 인식하고 추적하는 예제입니다.

import cv2

def detect_and_track_faces(video_path):
    # Haar Cascade 분류기 로드
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

    # 비디오 캡처 객체 생성
    cap = cv2.VideoCapture(video_path)

    # 얼굴 추적용 Tracker 생성
    tracker = cv2.TrackerCSRT_create()

    # 첫 프레임 읽기
    ret, frame = cap.read()

    # 얼굴 좌표 초기화
    faces = face_cascade.detectMultiScale(frame, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))
    for (x, y, w, h) in faces:
        tracker.init(frame, (x, y, w, h))
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # 추적 시작
    while True:
        ret, frame = cap.read()
        if not ret:
            break

        # 얼굴 추적
        success, box = tracker.update(frame)

        # 추적 결과 표시
        if success:
            (x, y, w, h) = [int(v) for v in box]
            cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

        # 프레임 출력
        cv2.imshow('Face Tracking', frame)

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

    # 비디오 종료
    cap.release()
    cv2.destroyAllWindows()

# 비디오 파일 경로
video_path = 'face_video.mp4'

# 얼굴 인식 및 추적
detect_and_track_faces(video_path)

이와 같이 OpenCV-Python을 사용하여 이미지나 비디오에서 얼굴을 인식하고 추적할 수 있습니다.

더 자세한 내용은 OpenCV-Python 공식 문서를 참조하시기 바랍니다.