import time from typing import Optional import cv2 import numpy as np class FrameRate: def __init__(self) -> None: self.c: int = 0 self.start_time: Optional[float] = None self.NO_FRAMES = 10 self.fps: float = -1 self.label: str = "" def reset(self) -> None: self.start_time = time.time() self.c = 0 self.fps = -1 def count(self) -> None: self.c += 1 if self.c % self.NO_FRAMES == 0: self.c = 0 end_time = time.time() self.fps = self.NO_FRAMES / (end_time - self.start_time) self.start_time = end_time def show_fps(self, image: np.ndarray) -> np.ndarray: if self.fps != -1: return cv2.putText( image, f"FPS {self.fps:.0f} _ {self.label}", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, fontScale=1, color=(255, 0, 0), thickness=2, ) else: return image