[python] 파이썬을 사용하여 동영상에서의 움직임 추적하기

동영상 처리를 통해 움직임을 추적하는 기술은 컴퓨터 비전 분야에서 매우 중요한 주제 중 하나입니다. 파이썬은 이러한 동영상 처리 및 추적 작업에 매우 효과적으로 사용할 수 있는 강력한 도구들을 제공합니다. 이번 포스트에서는 OpenCV 라이브러리를 사용하여 파이썬으로 동영상에서의 움직임을 추적하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

먼저, OpenCV 라이브러리를 설치해야 합니다. 파이썬에서 OpenCV를 설치하는 가장 간단한 방법은 pip를 사용하는 것입니다.

pip install opencv-python

동영상에서의 움직임 추적하기

다음은 파이썬을 사용하여 동영상에서의 움직임을 추적하는 간단한 예제 코드입니다.

import cv2

video_path = 'path/to/your/video.mp4'
cap = cv2.VideoCapture(video_path)
ret, frame1 = cap.read()
gray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)

while cap.isOpened():
    ret, frame2 = cap.read()
    if not ret:
        break
    gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
    diff = cv2.absdiff(gray1, gray2)
    _, thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)
    dilated = cv2.dilate(thresh, None, iterations=3)
    contours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    for contour in contours:
        (x, y, w, h) = cv2.boundingRect(contour)
        if cv2.contourArea(contour) < 900:
            continue
        cv2.rectangle(frame2, (x, y), (x+w, y+h), (0, 255, 0), 2)
        cv2.putText(frame2, "Status: {}".format('Movement'), (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 3)
    cv2.imshow('Motion Detection', frame2)

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

    gray1 = gray2

cap.release()
cv2.destroyAllWindows()

위 코드는 OpenCV의 cv2.VideoCapture를 사용하여 동영상을 읽고, 각 프레임 간의 차이를 계산하여 움직임을 추적하고 해당 부분에 사각형을 그리는 간단한 예제입니다.

마무리

이렇게 하여 파이썬과 OpenCV를 사용하여 동영상에서의 움직임을 추적하는 방법에 대해 알아보았습니다. 이 기술은 보안 시스템, 교통 흐름 분석, 동영상 분석 등 다양한 영역에서 활용될 수 있습니다.

더 많은 정보를 원하시거나 라이브러리의 다양한 기능을 알고 싶다면 OpenCV 공식 홈페이지를 방문하시기 바랍니다.