[파이썬] opencv-python 비디오에서 움직임 탐지

이 블로그 포스트에서는 OpenCV-Python을 사용하여 비디오에서 움직임을 탐지하는 방법에 대해 알아보겠습니다.

OpenCV란?

OpenCV(Open Source Computer Vision Library)은 실시간 컴퓨터 비전을 위한 오픈소스 라이브러리입니다. 이미지 및 비디오 처리와 관련된 다양한 기능을 제공합니다.

움직임 탐지 알고리즘

움직임 탐지 알고리즘을 구현하는 가장 간단한 방법 중 하나는 프레임 간의 차이를 계산하는 것입니다. 움직임이 발생하면 프레임 간의 차이가 크게 나타납니다. 이를 활용하여 움직임을 탐지할 수 있습니다.

코드 예시

여기에는 움직임 탐지를 위한 간단한 Python 코드 예시가 있습니다.

import cv2

# 비디오 파일 열기
video = cv2.VideoCapture('video.mp4')

# 처음 프레임 읽기
ret, previous_frame = video.read()

# 계속해서 프레임을 읽어와서 움직임 탐지
while True:
    # 현재 프레임 읽기
    ret, current_frame = video.read()
    
    # 프레임 간 차이 계산
    frame_diff = cv2.absdiff(previous_frame, current_frame)
    
    # 차이 이미지를 흑백으로 변환
    gray_diff = cv2.cvtColor(frame_diff, cv2.COLOR_BGR2GRAY)
    
    # 이진화를 통해 움직임을 강조
    _, binary_diff = cv2.threshold(gray_diff, 30, 255, cv2.THRESH_BINARY)
    
    # 움직임 탐지 결과를 화면에 표시
    cv2.imshow('Motion Detection', binary_diff)
    
    # 'q' 키를 누르면 종료
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    
    # 현재 프레임을 이전 프레임으로 갱신
    previous_frame = current_frame

# 비디오 파일과 객체 닫기
video.release()
cv2.destroyAllWindows()

위의 코드에서는 비디오 파일을 열고 각 프레임을 읽어와서 움직임을 탐지합니다. 프레임 간의 차이를 계산한 뒤, 차이 이미지를 흑백으로 변환하고 이진화하여 움직임을 강조합니다. 마지막으로, 움직임 탐지 결과를 화면에 표시합니다.

이 코드는 간단한 움직임 탐지의 예시일 뿐이며, 실제로는 더 복잡한 알고리즘과 기법을 적용하여 정확도와 성능을 향상시킬 수 있습니다.

결론

OpenCV-Python을 사용하여 움직임을 탐지하는 방법을 살펴보았습니다. 이를 통해 비디오에서 움직임을 감지하고, 보안 시스템, 모션 검출 등 다양한 응용 프로그램을 개발할 수 있습니다.