test metrics

This commit is contained in:
2026-05-10 23:54:11 +02:00
parent 651c150e23
commit f317e71899

View File

@@ -1,10 +1,11 @@
from dataclasses import asdict
from enum import Enum from enum import Enum
from typing import Any from typing import Any
import logging import logging
from PySide6.QtWidgets import QGridLayout, QHBoxLayout, QMainWindow, QStyle, QToolButton, QWidget, QVBoxLayout, QPushButton, QLabel from PySide6.QtWidgets import QGridLayout, QHBoxLayout, QMainWindow, QStyle, QToolButton, QWidget, QVBoxLayout, QPushButton, QLabel, QTextEdit
from PySide6.QtGui import QIcon, QPixmap from PySide6.QtGui import QIcon, QPixmap
from PySide6.QtCore import Qt, QSize from PySide6.QtCore import QTimer, Qt, QSize
from .video_stream.controller import VideoStreamController, FrameMetrics from .video_stream.controller import VideoStreamController, FrameMetrics
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -79,6 +80,9 @@ class MainWindow(QMainWindow):
self.setup_ui() self.setup_ui()
self.video_controller.start() self.video_controller.start()
self.timer = QTimer()
self.timer.timeout.connect(self.update_metrics)
self.timer.start(1000) # Update metrics every second
def setup_ui(self): def setup_ui(self):
self.central_widget = QWidget() self.central_widget = QWidget()
@@ -86,6 +90,14 @@ class MainWindow(QMainWindow):
self.central_widget.setStyleSheet("background-color: #001e1e;") self.central_widget.setStyleSheet("background-color: #001e1e;")
self.video_label = QLabel(self.central_widget) self.video_label = QLabel(self.central_widget)
self.video_label.setText("Video Stream")
self.video_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.video_label.setStyleSheet("color: white; font-size: 24px; background-color: #001e1e;")
self.metrics_label = QTextEdit(self.central_widget)
self.metrics_label.setReadOnly(True)
# self.metrics_label.setFixedWidth(300)
self.metrics_label.setStyleSheet("background-color: rgba(20, 20, 20, 0.5); color: white; font-size: 14px; border: none; padding: 8px;")
self.toolbar_widget = QWidget(self.central_widget) self.toolbar_widget = QWidget(self.central_widget)
self.toolbar_widget.setMinimumWidth(400) self.toolbar_widget.setMinimumWidth(400)
@@ -133,6 +145,10 @@ class MainWindow(QMainWindow):
def resizeEvent(self, event: Any) -> None: def resizeEvent(self, event: Any) -> None:
super().resizeEvent(event) super().resizeEvent(event)
self.video_label.setGeometry(self.central_widget.rect())
panel_width = min(300, max(280, self.central_widget.width() // 3))
self.metrics_label.setGeometry(18, 18, panel_width, 500)
self.toolbar_widget.adjustSize() self.toolbar_widget.adjustSize()
toolbar_size = self.toolbar_widget.sizeHint() toolbar_size = self.toolbar_widget.sizeHint()
@@ -203,4 +219,16 @@ class MainWindow(QMainWindow):
super().closeEvent(event) super().closeEvent(event)
def update_frame(self, frame): def update_frame(self, frame):
self.video_label.setPixmap(QPixmap.fromImage(frame)) # self.video_label.setPixmap(QPixmap.fromImage(frame))
pass
def update_metrics(self, metrics: FrameMetrics):
if metrics is None:
self.metrics_label.setPlainText("No metrics available")
return
metrics_text = ""
for key, value in asdict( metrics).items():
metrics_text += f"{key}: {value}\n"
self.metrics_label.setPlainText(metrics_text)