파이썬과 OpenCV를 사용하여 동영상에서 사람 트래킹하기

이번 포스트에서는 파이썬과 OpenCV를 사용하여 동영상에서 사람을 트래킹하는 방법에 대해 알아보겠습니다. 사람 트래킹은 컴퓨터 비전 분야에서 매우 중요한 작업 중 하나이며, 객체 추적, 보안 시스템, 동작 인식 등 다양한 응용 분야에 활용됩니다.

1. OpenCV 설치하기

먼저, OpenCV를 설치해야 합니다. 파이썬에서 OpenCV를 사용하기 위해서는 다음의 명령어를 사용하여 설치할 수 있습니다:

pip install opencv-python

2. 동영상 불러오기

사람 트래킹을 위해 먼저 동영상을 불러와야 합니다. OpenCV는 다양한 형식의 동영상을 지원하며, cv2.VideoCapture 함수를 사용하여 동영상을 불러올 수 있습니다.

import cv2

video = cv2.VideoCapture("video.mp4")  # 동영상 파일 경로

3. 트래킹 알고리즘 적용

다음으로, 사람 트래킹을 위한 알고리즘을 적용해야 합니다. 여러 가지 트래킹 알고리즘이 있지만, 여기에서는 OpenCV에서 제공하는 트래킹 알고리즘 중 하나인 KCF(Kernelized Correlation Filters)를 사용하도록 하겠습니다.

tracker = cv2.TrackerKCF_create()  # KCF 트래커 생성

_, frame = video.read()  # 첫 프레임 읽기
bbox = cv2.selectROI(frame, False)  # 트래킹할 객체 선택
tracker.init(frame, bbox)  # 트래커 초기화

4. 트래킹 수행

트래킹 알고리즘을 초기화한 후에는, 동영상의 모든 프레임을 순회하며 트래킹을 수행해야 합니다. 다음의 코드는 동영상의 모든 프레임을 읽고, 트래킹 결과를 시각화하는 코드입니다.

while True:
    _, frame = video.read()  # 프레임 읽기

    if not _:  # 더 이상 프레임이 없을 경우 종료
        break

    success, bbox = tracker.update(frame)  # 트래킹 수행

    if success:  # 트래킹 성공 시
        x, y, w, h = [int(i) for i in bbox]
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)  # 객체에 사각형 그리기

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

    if cv2.waitKey(1) == ord('q'):  # 'q' 키 입력 시 종료
        break

video.release()  # 동영상 해제
cv2.destroyAllWindows()  # 창 닫기

5. 실행하기

위의 코드를 실행하여 동영상 트래킹을 수행할 수 있습니다. 실행 시 video.mp4라는 동영상 파일을 재생하며, 객체 추적 결과를 화면에 표시합니다.

이상으로 파이썬과 OpenCV를 사용하여 동영상에서 사람을 트래킹하는 방법에 대해 알아보았습니다. 사람 트래킹은 다양한 응용 분야에 활용될 수 있으며, 알고리즘의 선택과 튜닝에 따라 트래킹의 정확도와 성능이 달라질 수 있습니다. 추가적인 설정 및 알고리즘 변경을 통해 원하는 결과를 얻을 수 있습니다.

#python #OpenCV