import cv2 from ultralytics import YOLO # https://docs.ultralytics.com/modes/predict/#streaming-source-for-loop # Load the YOLOv8 model model = YOLO('yolov8m.pt') # Open the video file video_path = 'run.mp4' cap = cv2.VideoCapture(video_path) fps = 0 prev_frame_time = 0 new_frame_time = 0 # Loop through the video frames while cap.isOpened(): # Read a frame from the video success, frame = cap.read() # Set current frame time new_frame_time = time.time() if success: # Run YOLOv8 inference on the frame results = model(frame) # Visualize the results on the frame annotated_frame = results[0].plot() # Calculate FPS fps = int(1 / (new_frame_time - prev_frame_time)) prev_frame_time = new_frame_time # Display the annotated frame cv2.imshow('YOLOv8 Inference', annotated_frame) # Break the loop if 'q' is pressed if cv2.waitKey(1) & 0xFF == ord('q'): break else: # Break the loop if the end of the video is reached break print(fps) # Release the video capture object and close the display window cap.release() cv2.destroyAllWindows()