alihaider1001
Updated app.py for Football Player Tracker
b2b6006
import cv2
from ultralytics import YOLO
from deep_sort_realtime.deepsort_tracker import DeepSort
import os
# Load YOLOv8 model
model = YOLO('yolov8n.pt')
tracker = DeepSort(max_age=30)
# Local video file
video_path = r'C:\Users\alyhi\Desktop\Football Player Tracker\video\vid.mp4'
if not os.path.exists(video_path):
raise FileNotFoundError(f"Video file not found: {video_path}")
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
raise IOError(f"Could not open video: {video_path}")
while True:
ret, frame = cap.read()
if not ret:
break
results = model(frame)[0]
detections = []
for result in results.boxes.data.tolist():
x1, y1, x2, y2, score, class_id = result
if int(class_id) == 0 and score > 0.4:
bbox = [x1, y1, x2 - x1, y2 - y1]
detections.append((bbox, score, 'player'))
tracks = tracker.update_tracks(detections, frame=frame)
for track in tracks:
if not track.is_confirmed():
continue
track_id = track.track_id
l, t, r, b = track.to_ltrb()
cv2.rectangle(frame, (int(l), int(t)), (int(r), int(b)), (0, 255, 0), 2)
cv2.putText(frame, f'Player {track_id}', (int(l), int(t - 10)),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)
cv2.imshow("⚽ Football Player Tracker", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()