지정된 객체의 위치의 이동 상황을 지속적으로 찾는 것을 객체 추적이라고 한다. 스포츠 경기에서 사람의 시선은 일반적으로 공이나 선수를 따라 움직이게 된다. 어떤 객체를 한번 인식하고 난 후에는 객체의 움직임을 쉽게 파악할 수 있다. 그러다가 움직임을 놓치면 다시 주변 환경을 파악해서 원하는 객체를 찾게 된다. 컴퓨터 역시 객체를 인식하고 검출하기 위해 사람이 눈을 움직이는 것처럼 객체를 추적하는 방법이 필요하다. 컴퓨터는 연속적인 장면에 대한 흐름에 따라 객체를 파악해낸다. 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
728x90
반응형
'데이터 분석 & 시각화 > OpenCV' 카테고리의 다른 글
[OpenCV Programming] 객체 추적 2 (0) | 2020.08.26 |
---|---|
[OpenCV Practice 08] 이미지 임계값 처리 Image Thresholding (0) | 2020.08.21 |
[OpenCV Practice 07] 색공간 추적하기 (0) | 2020.08.19 |
[OpenCV Practice 06 - 2] 이미지 비트연산 (0) | 2020.08.19 |
[OpenCV Programming] 캐스케이드 분류기(Cascade Classifier) (0) | 2020.08.18 |
최근댓글