파이썬과 OpenCV를 사용한 동영상에서 물체 위치 추정하기

소개

이번 블로그 포스트에서는 파이썬과 OpenCV를 사용하여 동영상에서 물체의 위치를 추정하는 방법에 대해 알아보겠습니다. 이미지 처리와 컴퓨터 비전 분야에서 많이 사용되는 OpenCV는 다양한 기능을 제공하며, 동영상에서 물체를 추적하는 데에도 매우 유용합니다.

필요한 패키지 설치

이 작업을 수행하기 위해서는 다음과 같은 패키지를 설치해야 합니다:

아래의 명령어를 사용하여 필요한 패키지를 설치할 수 있습니다:

pip install opencv-python
pip install numpy

동영상에서 물체 추적하기

다음은 파이썬 코드를 사용하여 동영상에서 물체를 추적하는 간단한 예제입니다:

import cv2

# 동영상 파일 열기
cap = cv2.VideoCapture('input_video.mp4')

# 추적할 물체의 색상 범위 설정
lower_range = (0, 0, 0)  # 추적할 물체의 최소 RGB 값
upper_range = (255, 255, 255)  # 추적할 물체의 최대 RGB 값

while cap.isOpened():
    # 프레임 읽기
    ret, frame = cap.read()

    if ret:
        # 이미지를 HSV로 변환
        hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

        # 추적할 물체의 색상 범위로 마스크 생성
        mask = cv2.inRange(hsv_frame, lower_range, upper_range)

        # 마스크로부터 추출된 컨투어 찾기
        contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

        if len(contours) > 0:
            # 가장 큰 컨투어 추출
            max_contour = max(contours, key=cv2.contourArea)

            # 컨투어의 외곽선 그리기
            cv2.drawContours(frame, [max_contour], -1, (0, 255, 0), 2)

            # 물체의 중심 좌표 추출
            M = cv2.moments(max_contour)
            center_x = int(M['m10'] / M['m00'])
            center_y = int(M['m01'] / M['m00'])

            # 물체의 중심 좌표에 원 그리기
            cv2.circle(frame, (center_x, center_y), 5, (0, 0, 255), -1)

        # 프레임 보여주기
        cv2.imshow('Object Tracking', frame)

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

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

결과 확인하기

위의 코드를 실행하면 동영상 파일에서 물체를 추적하는 결과를 확인할 수 있습니다. 프레임에는 추적된 물체의 외곽선과 중심 좌표가 표시됩니다.

마무리

파이썬과 OpenCV를 사용하여 동영상에서 물체의 위치를 추정하는 방법에 대해 알아보았습니다. 이를 통해 컴퓨터 비전 분야에서 다양한 응용 프로그램을 개발할 수 있습니다. 더 많은 기능과 활용법을 알아보려면 OpenCV 공식 문서와 예제를 참조하시기 바랍니다.

#opencv #python