From 0c373550d1ec5962d66179cdb42b493d66ebf3a1 Mon Sep 17 00:00:00 2001 From: Fiber Date: Tue, 15 Oct 2024 11:07:59 +0800 Subject: [PATCH] =?UTF-8?q?ui=20=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/esd_bleeding_view_tool/__init__.py | 76 ++++++++++++++------------ 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/src/esd_bleeding_view_tool/__init__.py b/src/esd_bleeding_view_tool/__init__.py index aa226b5..c7e9116 100644 --- a/src/esd_bleeding_view_tool/__init__.py +++ b/src/esd_bleeding_view_tool/__init__.py @@ -15,39 +15,30 @@ from PySide6.QtWidgets import (QApplication, QFileDialog,QGraphicsView, QMainWin QMenuBar, QPushButton, QSizePolicy, QStatusBar, QGraphicsScene, QComboBox, QTextBrowser, QWidget) - +# ui设计部分 class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName(u"MainWindow") - self.resize(1173, 750) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.pushButton = QPushButton(self.centralwidget) self.pushButton.setObjectName(u"pushButton") - self.pushButton.setGeometry(QRect(880, 400, 141, 81)) self.pushButton_2 = QPushButton(self.centralwidget) self.pushButton_2.setObjectName(u"pushButton_2") - self.pushButton_2.setGeometry(QRect(1020, 400, 141, 81)) self.graphicsView = QGraphicsView(self.centralwidget) self.graphicsView.setObjectName(u"graphicsView") - self.graphicsView.setGeometry(QRect(0, 0, 871, 700)) self.textBrowser = QTextBrowser(self.centralwidget) self.textBrowser.setObjectName(u"textBrowser") - self.textBrowser.setGeometry(QRect(880, 80, 281, 291)) self.pushButton_3 = QPushButton(self.centralwidget) self.pushButton_3.setObjectName(u"pushButton_3") - self.pushButton_3.setGeometry(QRect(880, 560, 141, 81)) self.pushButton_4 = QPushButton(self.centralwidget) self.pushButton_4.setObjectName(u"pushButton_4") - self.pushButton_4.setGeometry(QRect(1020, 560, 141, 81)) self.comboBox = QComboBox(self.centralwidget) self.comboBox.setObjectName(u"comboBox") - self.comboBox.setGeometry(QRect(1020, 530, 141, 31)) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setObjectName(u"menubar") - self.menubar.setGeometry(QRect(0, 0, 1173, 33)) self.menu = QMenu(self.menubar) self.menu.setObjectName(u"menu") self.menu_2 = QMenu(self.menubar) @@ -56,6 +47,7 @@ class Ui_MainWindow(object): self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName(u"statusbar") MainWindow.setStatusBar(self.statusbar) + self.set_size() self.menubar.addAction(self.menu.menuAction()) self.menubar.addAction(self.menu_2.menuAction()) @@ -63,7 +55,20 @@ class Ui_MainWindow(object): self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) - # setupUi + # 自适应界面大小 + def set_size(self, w=800, h=600): + w = w+10 + h = h+10 + w_button = 110 + self.resize(w+250, h+100) + self.pushButton.setGeometry(QRect(w+10, 400, w_button, 40)) + self.pushButton_2.setGeometry(QRect(w+10+w_button+10, 400, w_button, 40)) + self.graphicsView.setGeometry(QRect(0, 0, w, h)) + self.textBrowser.setGeometry(QRect(w+10, 30, w_button*2+10, 350)) + self.pushButton_3.setGeometry(QRect(w+10, 560, w_button, 40)) + self.pushButton_4.setGeometry(QRect(w+10+w_button+10, 560, w_button, 40)) + self.comboBox.setGeometry(QRect(w+10+w_button+10, 530, w_button, 30)) + self.menubar.setGeometry(QRect(0, 0, w+230, h+100)) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) @@ -71,11 +76,11 @@ class Ui_MainWindow(object): self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Right", None)) self.pushButton_3.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u89c6\u9891", None)) self.pushButton_4.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u6807\u7b7e", None)) - self.menu.setTitle(QCoreApplication.translate("MainWindow", u"\u8f7d\u5165\u6570\u636e", None)) - self.menu_2.setTitle(QCoreApplication.translate("MainWindow", u"\u6807\u7b7e\u68c0\u67e5", None)) + self.menu.setTitle(QCoreApplication.translate("MainWindow", u"menu1", None)) + self.menu_2.setTitle(QCoreApplication.translate("MainWindow", u"menu2", None)) # retranslateUi - +# ui逻辑控制 class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self): super(MainWindow, self).__init__() @@ -93,45 +98,47 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.graphicsView.show() self.now = 2400 - self.is_video_set = 0 - self.is_label_set = 0 - def show_frame(self): - if not self.is_video_set or not self.is_label_set: - return - frame_num, method_raw = self.mark.read(self.now) - img = self.video.read(frame_num) - cvimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 把opencv 默认BGR转为通用的RGB + def show_video(self): + img = self.video.read(self.now) # 读入opencv视频流 y, x = img.shape[:-1] + #视频帧如果过大需要在此进行缩放,如 + max_width = 1500 + if x > max_width: + mult = max_width/x + img = cv2.resize(img, (0, 0), fx=mult, fy=mult, interpolation=cv2.INTER_NEAREST) + y, x = img.shape[:-1] + + self.set_size(x, y) + cvimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 把opencv 默认BGR转为通用的RGB + frame = QImage(cvimg, x, y, QImage.Format_RGB888) self.scene.clear() #先清空上次的残留 self.pix = QPixmap.fromImage(frame) self.scene.addPixmap(self.pix) - text = "帧数:"+"{:06d}".format(frame_num)+"\n"+"{:02d}".format(int(frame_num/30/60%60)) \ - +":"+"{:02d}".format(int(frame_num/30))+"\n操作:" - method = self.mark.get_method(method_raw) - for i in method: - text += "\n" + i + def show_text(self): + text = "显示的文字" self.textBrowser.setText(text) self.textBrowser.show() def left_frame(self): if self.now > 0: self.now -= 1 - self.show_frame() + self.show_video() + self.show_text() def right_frame(self): - if self.now < self.max_mark - 1: + if self.now < 1000 - 1: self.now += 1 - self.show_frame() + self.show_video() + self.show_text() def load_video(self): fname ,_ = QFileDialog.getOpenFileName(self, 'Open Video', '../', 'Video files (*.mp4 *.avi *.mp4 *.m4v *.mkv *.mkv)') self.video = Video(fname) - self.is_video_set = 1 - self.show_frame() + self.show_video() def load_mark(self): @@ -142,13 +149,12 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.comboBox.clear() self.comboBox.addItems(self.mark.sheet_list()) - self.is_label_set = 1 - self.show_frame() + self.show_text() def name_reset(self): name = self.comboBox.currentText() self.mark.change_name(name) - self.show_frame() + self.show_text()