파이썬으로 OpenCV를 이용하여 동영상에서 물체 트래킹하기
이 포스트에서는 파이썬과 OpenCV를 사용하여 동영상에서 물체를 추적하는 방법에 대해 알아보겠습니다. OpenCV는 컴퓨터 비전을 위한 강력한 라이브러리로, 이미지 및 비디오 프로세싱, 객체 검출 및 트래킹 등 다양한 작업을 수행할 수 있습니다.
동영상 불러오기
먼저 OpenCV를 설치하고 동영상을 불러와야 합니다. 다음 코드를 사용하여 동영상을 불러오고 화면에 보여줍니다.
import cv2
# 동영상 파일 열기
video = cv2.VideoCapture('video.mp4')
while True:
# 현재 프레임 읽기
ret, frame = video.read()
# 동영상 끝까지 재생하면 종료
if not ret:
break
# 프레임 화면에 표시하기
cv2.imshow('Video', frame)
# 'q' 키를 누르면 종료
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 종료 후에 창 닫기
cv2.destroyAllWindows()
이 코드는 “video.mp4” 파일을 읽고, 각 프레임을 화면에 표시합니다. ‘q’ 키를 눌러서 종료할 수 있습니다.
물체 추적하기
이제 물체를 추적하는 과정을 알아보겠습니다. 물체 추적을 위해 먼저 초기 위치를 선택해야 합니다. 이 위치는 추후에 업데이트될 것입니다.
import cv2
# 동영상 파일 열기
video = cv2.VideoCapture('video.mp4')
# 첫 번째 프레임 읽기
ret, frame = video.read()
# 초기 위치 선택
bbox = cv2.selectROI(frame, False)
# 트래커 초기화
tracker = cv2.TrackerCSRT_create()
tracker.init(frame, bbox)
while True:
# 현재 프레임 읽기
ret, frame = video.read()
# 동영상 끝까지 재생하면 종료
if not ret:
break
# 물체 추적
success, bbox = tracker.update(frame)
# 추적 결과 화면에 표시하기
if success:
# 추적 성공
x, y, w, h = [int(v) for v in bbox]
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
else:
# 추적 실패
cv2.putText(frame, "Tracking Failure", (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
# 프레임 화면에 표시하기
cv2.imshow('Video', frame)
# 'q' 키를 누르면 종료
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 종료 후에 창 닫기
cv2.destroyAllWindows()
위 코드는 선택한 물체의 위치를 추적하고, 업데이트 된 위치를 화면에 표시합니다. 만약 추적에 실패하면 “Tracking Failure”라는 메시지가 화면에 표시됩니다.
요약
이 포스트에서는 파이썬과 OpenCV를 사용하여 동영상에서 물체를 추적하는 방법에 대해 알아보았습니다. OpenCV의 다양한 기능을 활용하여 물체 추적 애플리케이션을 개발할 수 있습니다. 더 많은 정보와 사용 예제를 참고하려면 OpenCV 공식 문서를 참조하시기 바랍니다.
References:
- OpenCV 공식 문서: https://docs.opencv.org/
- 파이썬 영상 처리와 컴퓨터 비전 관련 서적 및 자료들