43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
import cv2
|
|
import time
|
|
from ultralytics import YOLO
|
|
from seguimiento2 import GlobalMemory, CamManager, dibujar_track
|
|
|
|
def test_video(video_path):
|
|
print(f"Iniciando Benchmark de Video: {video_path}")
|
|
model = YOLO("yolov8n.pt")
|
|
global_mem = GlobalMemory()
|
|
manager = CamManager("TEST_CAM", global_mem)
|
|
|
|
cap = cv2.VideoCapture(video_path)
|
|
cv2.namedWindow("Benchmark TT", cv2.WINDOW_AUTOSIZE)
|
|
|
|
while cap.isOpened():
|
|
ret, frame = cap.read()
|
|
if not ret: break
|
|
|
|
now = time.time()
|
|
frame_show = cv2.resize(frame, (480, 270))
|
|
|
|
# Inferencia frame por frame sin hilos (sincrónico)
|
|
res = model.predict(frame_show, conf=0.40, iou=0.50, classes=[0], verbose=False, imgsz=480, device='cpu')
|
|
boxes = res[0].boxes.xyxy.cpu().numpy().tolist() if res[0].boxes else []
|
|
|
|
tracks = manager.update(boxes, frame_show, now, turno_activo=True)
|
|
|
|
for trk in tracks:
|
|
if trk.time_since_update == 0:
|
|
dibujar_track(frame_show, trk)
|
|
|
|
cv2.imshow("Benchmark TT", frame_show)
|
|
|
|
# Si presionas espacio se pausa, con 'q' sales
|
|
key = cv2.waitKey(30) & 0xFF
|
|
if key == ord('q'): break
|
|
elif key == ord(' '): cv2.waitKey(-1)
|
|
|
|
cap.release()
|
|
cv2.destroyAllWindows()
|
|
|
|
if __name__ == "__main__":
|
|
test_video("video.mp4") # Pon aquí el nombre de tu video |