import sys
import numpy as np
import cv2
# 동영상 열기
cap = cv2.VideoCapture('tracking2.mp4')
if not cap.isOpened():
print('Video open failed!')
sys.exit()
# 트래커 객체 생성
# Kernelized Correlation Filters
#tracker = cv2.TrackerKCF_create()
# Minimum Output Sum of Squared Error
#tracker = cv2.TrackerMOSSE_create()
# Discriminative Correlation Filter with Channel and Spatial Reliability
tracker = cv2.TrackerCSRT_create() #잘 인식하나 느림
# 첫 번째 프레임에서 추적 ROI 설정
ret, frame = cap.read()
if not ret:
print('Frame read failed!')
sys.exit()
rc=cv2.selectROI('frame',frame)
tracker.init(frame,rc)
# 매 프레임 처리
while True:
ret,frame=cap.read()
if not ret:
print('Frame read failed!')
sys.exit()
# 추적 & ROI 사각형 업데이트
ret,rc=tracker.update(frame) #rc값이 float형 튜플로 받아진다
rc=tuple([int(_)for _ in rc]) # int 타입으로 하나하나 변환
cv2.rectangle(frame,rc,(0,0,255),2)
cv2.imshow('frame', frame)
if cv2.waitKey(20) == 27:
break
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[69] 7) 밀집 오티컬플로우 (0) | 2021.04.03 |
---|---|
[68] 6) 루카스-카나데 옵티컬플로우 (0) | 2021.04.03 |
[67] 5) 캠시프트 알고리즘 (0) | 2021.04.03 |
[66] 4) 평균 이동 알고리즘 (0) | 2021.03.28 |
[65] 3) 배경 차분 : MOG 배경 모델 (0) | 2021.03.28 |