import cv2
import time
# Загрузка детектора тела
body_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_fullbody.xml')
# Создание трекера
tracker = cv2.TrackerCSRT_create()
# Загрузка видео
video = cv2.VideoCapture('video_2024-02-16_01-11-35.mp4')
fps = video.get(cv2.CAP_PROP_FPS) # Получение FPS видео
start_time = time.time()
frame_count = 0
detect_interval = 5 # Обнаружение и инициализация трекера на каждом 5-ом кадре
while True:
ret, frame = video.read()
if not ret:
break
frame_count += 1
if frame_count % detect_interval == 0:
# Обнаружение тела человека
bodies = body_cascade.detectMultiScale(frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
if len(bodies) > 0:
(x, y, w, h) = bodies[0]
bbox = (x, y, w, h)
tracker.init(frame, bbox)
# Отслеживание объекта
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, 0, 255), 2)
cv2.putText(frame, f"FPS: {int(1.0 / (time.time() - start_time))}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1,
(0, 255, 0), 2)
cv2.imshow("Frame", frame)
start_time = time.time()
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
video.release()
cv2.destroyAllWindows()