test metrics
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
from dataclasses import asdict
|
||||
from enum import Enum
|
||||
from typing import Any
|
||||
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.QtCore import Qt, QSize
|
||||
from PySide6.QtCore import QTimer, Qt, QSize
|
||||
|
||||
from .video_stream.controller import VideoStreamController, FrameMetrics
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -79,6 +80,9 @@ class MainWindow(QMainWindow):
|
||||
self.setup_ui()
|
||||
|
||||
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):
|
||||
self.central_widget = QWidget()
|
||||
@@ -86,6 +90,14 @@ class MainWindow(QMainWindow):
|
||||
self.central_widget.setStyleSheet("background-color: #001e1e;")
|
||||
|
||||
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.setMinimumWidth(400)
|
||||
@@ -133,6 +145,10 @@ class MainWindow(QMainWindow):
|
||||
|
||||
def resizeEvent(self, event: Any) -> None:
|
||||
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()
|
||||
toolbar_size = self.toolbar_widget.sizeHint()
|
||||
@@ -203,4 +219,16 @@ class MainWindow(QMainWindow):
|
||||
super().closeEvent(event)
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user