diff --git a/src/esd_bleeding_view_tool/__init__.py b/src/esd_bleeding_view_tool/__init__.py index 089c3b7..c2152c9 100644 --- a/src/esd_bleeding_view_tool/__init__.py +++ b/src/esd_bleeding_view_tool/__init__.py @@ -1,32 +1,97 @@ import sys -import random -from PySide6 import QtCore, QtWidgets, QtGui +import cv2 -class MyWidget(QtWidgets.QWidget): +from core import Video, Mark + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient, + QCursor, QFont, QFontDatabase, QGradient, + QIcon, QImage, QKeySequence, QLinearGradient, + QPainter, QPalette, QPixmap, QRadialGradient, + QTransform) +from PySide6.QtWidgets import (QApplication, QGraphicsView, QMainWindow, QMenu, + QMenuBar, QPushButton, QSizePolicy, QStatusBar, QGraphicsScene, + QTextBrowser, QWidget) + +video_dir = "raw/video/王传林.mp4" +mark_dir = "raw/mark/ESD-Bleeding-标注.xlsx" + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + if not MainWindow.objectName(): + MainWindow.setObjectName(u"MainWindow") + MainWindow.resize(1173, 712) + 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, 641)) + self.textBrowser = QTextBrowser(self.centralwidget) + self.textBrowser.setObjectName(u"textBrowser") + self.textBrowser.setGeometry(QRect(880, 80, 281, 291)) + 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) + self.menu_2.setObjectName(u"menu_2") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QStatusBar(MainWindow) + self.statusbar.setObjectName(u"statusbar") + MainWindow.setStatusBar(self.statusbar) + + self.menubar.addAction(self.menu.menuAction()) + self.menubar.addAction(self.menu_2.menuAction()) + + self.retranslateUi(MainWindow) + + QMetaObject.connectSlotsByName(MainWindow) + # setupUi + + def retranslateUi(self, MainWindow): + MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) + self.pushButton.setText(QCoreApplication.translate("MainWindow", u"Left", None)) + self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Right", 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)) + # retranslateUi + +class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self): - super().__init__() + super(MainWindow, self).__init__() + self.setupUi(self) + self.pushButton.addAction(self.left()) + + self.scene = QGraphicsScene() + self.graphicsView.setScene(self.scene) + self.graphicsView.show() - self.hello = ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"] + video = Video(video_dir) + img = video.read(3) - self.button = QtWidgets.QPushButton("Click me!") - self.text = QtWidgets.QLabel("Hello World", - alignment=QtCore.Qt.AlignCenter) + 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) - self.layout = QtWidgets.QVBoxLayout(self) - self.layout.addWidget(self.text) - self.layout.addWidget(self.button) + def left(self): + pass - self.button.clicked.connect(self.magic) - - @QtCore.Slot() - def magic(self): - self.text.setText(random.choice(self.hello)) - -if __name__ == "__main__": - app = QtWidgets.QApplication([]) - - widget = MyWidget() - widget.resize(800, 600) - widget.show() - - sys.exit(app.exec()) \ No newline at end of file +if __name__ == '__main__': + app = QApplication(sys.argv) + win = MainWindow() + win.show() + app.exec() \ No newline at end of file diff --git a/src/esd_bleeding_view_tool/core.py b/src/esd_bleeding_view_tool/core.py index f43788d..8e3ac0d 100644 --- a/src/esd_bleeding_view_tool/core.py +++ b/src/esd_bleeding_view_tool/core.py @@ -3,8 +3,7 @@ import cv2 import pandas as pd import re -video_dir = "raw/video/王传林.mp4" -mark_dir = "raw/mark/ESD-Bleeding-标注.xlsx" + interval = 30 def convert_video(videoname): @@ -34,7 +33,7 @@ class Video: self.video = capture else: self.video = None - def read_frame(self, frame_num): + def read(self, frame_num): cap = self.video cap.set(cv2.CAP_PROP_POS_FRAMES, frame_num) ret, img=cap.read() @@ -61,6 +60,8 @@ class Mark: if __name__ == "__main__": + video_dir = "raw/video/王传林.mp4" + mark_dir = "raw/mark/ESD-Bleeding-标注.xlsx" mark = Mark(mark_dir, "王传林") frame, method = mark.read(1) print(int(frame),method) \ No newline at end of file