지정된 객체의 위치의 이동 상황을 지속적으로 찾는 것을 객체 추적이라고 한다. 스포츠 경기에서 사람의 시선은 일반적으로 공이나 선수를 따라 움직이게 된다. 어떤 객체를 한번 인식하고 난 후에는 객체의 움직임을 쉽게 파악할 수 있다. 그러다가 움직임을 놓치면 다시 주변 환경을 파악해서 원하는 객체를 찾게 된다. 컴퓨터 역시 객체를 인식하고 검출하기 위해 사람이 눈을 움직이는 것처럼 객체를 추적하는 방법이 필요하다. 컴퓨터는 연속적인 장면에 대한 흐름에 따라 객체를 파악해낸다. OpenCV에서 지원되는 객체의 움직임을 파악할 수 있도록 영상에서 배경을 제거해주는 기능을 통해서 객체 인식이 가능하다.

 


BackgroundSubtractorMOG2

import cv2 
import numpy as np

capture = cv2.VideoCapture("baseball.mp4")

# Background 제거 객체 생성
bgsubtract = cv2.createBackgroundSubtractorMOG2()

while capture.isOpened():
    ret, frame = capture.read()
    if not ret:
        break
    # Background 제거 mask  
    mask = bgsubtract.apply(frame)
    cv2.imshow("Video", frame)
    cv2.imshow("BackGround_Sub", mask)
    if cv2.waitKey(30) & 0xff == 27:
        break
        
capture.release()
cv2.destroyAllWindows()

배경 제거 객체 생성 함수로는 cv2.createBackgroundSubtractorMOG2()를 사용한다. cv2.BackgroundSubtractor에 포함된 apply함수는 입력 영상,[출력 결과, 배경 훈련 속도]를 인자로 사용한다. 배경 훈련 속도는 -1이 default값으로 설정되며, 0부터 1사이의 값을 설정해서 배경 훈련 속도를 조정할 수 있다. 0은 배경 모델이 업데이트되지 않았다는 것을, 1은 배경 모델이 마지막 프레임에서 초기화되었음을 의미한다.

 

*Reference

 

OpenCV: How to Use Background Subtraction Methods

Next Tutorial: Meanshift and Camshift Background subtraction (BS) is a common and widely used technique for generating a foreground mask (namely, a binary image containing the pixels belonging to moving objects in the scene) by using static cameras. As the

docs.opencv.org

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기