Files
Traffic-Intersection-Monito…/qt_app_pyside1/controllers/performance_overlay.py

42 lines
1.5 KiB
Python

from PySide6.QtWidgets import QWidget, QLabel, QVBoxLayout
from PySide6.QtCore import QTimer
import psutil
class PerformanceOverlay(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(self.windowFlags() | 0x00080000) # Qt.ToolTip
layout = QVBoxLayout(self)
self.cpu_label = QLabel("CPU: --%")
self.ram_label = QLabel("RAM: --%")
self.fps_label = QLabel("FPS: --")
self.infer_label = QLabel("Inference: -- ms")
layout.addWidget(self.cpu_label)
layout.addWidget(self.ram_label)
layout.addWidget(self.fps_label)
layout.addWidget(self.infer_label)
self.fps = None
self.infer_time = None
self.update_stats()
# Add timer for auto-refresh
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_stats)
self.timer.start(1000) # Update every second
def update_stats(self):
self.cpu_label.setText(f"CPU: {psutil.cpu_percent()}%")
self.ram_label.setText(f"RAM: {psutil.virtual_memory().percent}%")
if self.fps is not None:
self.fps_label.setText(f"FPS: {self.fps:.1f}")
else:
self.fps_label.setText("FPS: --")
if self.infer_time is not None:
self.infer_label.setText(f"Inference: {self.infer_time:.1f} ms")
else:
self.infer_label.setText("Inference: -- ms")
def set_video_stats(self, fps, inference_time):
self.fps = fps
self.infer_time = inference_time
self.update_stats()