From 42a5b65af8eab68b2ee48befddffa3820f48e802 Mon Sep 17 00:00:00 2001 From: Fiber Date: Sat, 5 Oct 2024 21:54:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E5=8F=96=20with=20ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/esd_bleeding_view_tool/__init__.py | 36 +++++++++++++++++++++----- src/esd_bleeding_view_tool/core.py | 12 +++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/esd_bleeding_view_tool/__init__.py b/src/esd_bleeding_view_tool/__init__.py index c2152c9..ef811b6 100644 --- a/src/esd_bleeding_view_tool/__init__.py +++ b/src/esd_bleeding_view_tool/__init__.py @@ -34,7 +34,7 @@ class Ui_MainWindow(object): 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, 641)) + 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)) @@ -71,24 +71,48 @@ class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) - self.pushButton.addAction(self.left()) + + self.pushButton.clicked.connect(self.left_frame) + self.pushButton_2.clicked.connect(self.right_frame) self.scene = QGraphicsScene() self.graphicsView.setScene(self.scene) self.graphicsView.show() - video = Video(video_dir) - img = video.read(3) + self.video = Video(video_dir) + self.mark = Mark(mark_dir,"王传林") + self.max_mark = self.mark.max_frame() + + self.now = 0 + self.show_frame() + + def show_frame(self): + 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 y, x = img.shape[:-1] 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操作:" + method = self.mark.get_method(method_raw) + for i in method: + text += "\n" + i + self.textBrowser.setText(text) + self.textBrowser.show() - def left(self): - pass + def left_frame(self): + if self.now > 0: + self.now -= 1 + self.show_frame() + + def right_frame(self): + if self.now < self.max_mark - 1: + self.now += 1 + self.show_frame() if __name__ == '__main__': app = QApplication(sys.argv) diff --git a/src/esd_bleeding_view_tool/core.py b/src/esd_bleeding_view_tool/core.py index 8e3ac0d..ba1147d 100644 --- a/src/esd_bleeding_view_tool/core.py +++ b/src/esd_bleeding_view_tool/core.py @@ -41,6 +41,7 @@ class Video: return img else: return None + class Mark: def __init__(self, mark_dir, sheet_name): @@ -57,6 +58,17 @@ class Mark: return (int(rt[0]), line[self.method[0]:]) else: return None + + def max_frame(self): + return self.total_frame + + def get_method(self, raw): + method = [] + NaN = pd.isnull(raw) + for i in range(len(raw)): + if not NaN.iloc[i]: + method.append(self.method[i]) + return method if __name__ == "__main__":