예제 #1
0
    def __init__(self, parent=None):
        super(VideoPlayer, self).__init__(parent)

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        #self.mediaPlayer.setMinmumSize(QtCore.QSize(445, 225))

        btnSize = QSize(16, 16)
        videoWidget = QVideoWidget()
        videoWidget.setMinimumSize(QtCore.QSize(445, 225))

        openButton = QPushButton("Open Video")
        openButton.setToolTip("Open Video File")
        openButton.setStatusTip("Open Video File")
        openButton.setFixedHeight(24)
        openButton.setIconSize(btnSize)
        openButton.setFont(QFont("Noto Sans", 8))
        openButton.setIcon(
            QIcon.fromTheme("document-open", QIcon("D:/_Qt/img/open.png")))
        openButton.clicked.connect(self.abrir)

        self.playButton = QPushButton()
        self.playButton.setEnabled(False)
        self.playButton.setFixedHeight(24)
        self.playButton.setIconSize(btnSize)
        self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
        self.playButton.clicked.connect(self.play)

        self.positionSlider = QSlider(Qt.Horizontal)
        self.positionSlider.setRange(0, 0)
        self.positionSlider.sliderMoved.connect(self.setPosition)

        self.statusBar = QStatusBar()
        self.statusBar.setFont(QFont("Noto Sans", 7))
        self.statusBar.setFixedHeight(14)

        controlLayout = QHBoxLayout()
        controlLayout.setContentsMargins(0, 0, 0, 0)
        #controlLayout.addWidget(openButton)
        controlLayout.addWidget(self.playButton)
        controlLayout.addWidget(self.positionSlider)

        layout = QVBoxLayout()
        #layout.setMinmumSize(QtCore.QSize(445, 225))
        layout.addWidget(videoWidget)
        layout.addLayout(controlLayout)
        layout.addWidget(self.statusBar)

        self.setLayout(layout)

        self.mediaPlayer.setVideoOutput(videoWidget)
        self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
        self.mediaPlayer.positionChanged.connect(self.positionChanged)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
        self.mediaPlayer.error.connect(self.handleError)
        self.statusBar.showMessage("Ready")
예제 #2
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'Main'
        self.left = 10
        self.top = 10
        self.width = 640
        self.height = 480

        self.setWindowTitle(self.title)
        # self.setGeometry(self.left, self.top, self.width, self.height)

        # Create video widget
        self.videoWidget = QVideoWidget()
        self.videoWidget.aspectRatioMode = Qt.KeepAspectRatio
        self.videoWidget.setSizePolicy(QSizePolicy.MinimumExpanding,
                                       QSizePolicy.Preferred)
        self.videoWidget.setMinimumSize(320, 320)
        # Create Media player
        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.mediaPlayer.setVideoOutput(self.videoWidget)
        # self.mediaPlayer.positionChanged.connect(self.positionChanged)

        self.mediaPlayer.setMedia(
            QMediaContent(QUrl.fromLocalFile(os.path.abspath('sample2.mov'))))

        # Create media player bridge
        self.mediaPlayerBridge = MediaPlayerBridge(self.mediaPlayer)

        # Create Web View
        self.webView = QtWebEngineWidgets.QWebEngineView()
        self.webView.setContextMenuPolicy(
            Qt.PreventContextMenu)  # TODO: test NoContextMenu
        # self.webView.setWindowFlags(Qt.FramelessWindowHint)
        # self.webView.setAttribute(Qt.WA_TranslucentBackground, True)
        self.page = WebRTCPageView()
        self.page.setBackgroundColor(Qt.transparent)
        self.page.objects = {"mediaPlayerBridge": self.mediaPlayerBridge}
        self.page.profile().clearHttpCache()
        self.webView.setPage(self.page)

        # Create layout
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        layout.addWidget(self.videoWidget)
        layout.addWidget(self.webView)

        self.setLayout(layout)
        self.resize(640, 800)
        self.show()

        self.mediaPlayer.play()
예제 #3
0
class Template(QWidget):
    def __init__(self):
        super().__init__()

        self.player = QMediaPlayer()

        self.slider = SongSlider()
        self.player.mediaStatusChanged.connect(self.set_slider)

        # self.playlist = QMediaPlaylist()
        self.playlist = QVideoWidget()

        # self.player.setPlaylist(self.playlist)
        self.player.setVideoOutput(self.playlist)

        btn = QPushButton('Open')
        btn.clicked.connect(self.load_song)

        btnNext = QPushButton('Next frame')
        btnNext.clicked.connect(self.next_frame)

        grid = QGridLayout(self)
        grid.addWidget(self.playlist, 0, 0)
        grid.addWidget(self.slider, 1, 0)
        grid.addWidget(btn, 2, 0, Qt.AlignLeft)
        grid.addWidget(btnNext, 2, 1, Qt.AlignLeft)
        self.playlist.setMinimumSize(QSize(431, 391))

    def set_slider(self):
        if self.player.mediaStatus() == QMediaPlayer.BufferedMedia:
            self.player.positionChanged.connect(self.slider.setPos)
            self.slider.moved[int].connect(self.player.setPosition)
            self.slider.setRange(self.player.duration())
            print('set slider ' + str(self.slider.moved))

    def load_song(self):
        file, _ = QFileDialog.getOpenFileUrl(self, 'Choose song')
        if file:
            # self.playlist.addMedia(QMediaContent(file))
            self.player.setMedia(QMediaContent(file))

            self.player.play()
            print('load song' + str(self.slider.moved))

    def next_frame(
        self
    ):  #################################################################3#
        if self.player.mediaStatus() == QMediaPlayer.BufferedMedia:
            self.player.positionChanged.connect(self.slider.setPos)
            self.slider.moved[int].connect(self.player.setPosition)
            self.slider.setRange(self.player.duration())
            print('set slider ' + str(self.slider.moved))
예제 #4
0
class Ui_MainWindow_loading(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(960, 540)
        mainWindow.setCursor(QtGui.QCursor(QtCore.Qt.BusyCursor))
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.widget = QVideoWidget(self.centralwidget)
        self.widget.setEnabled(True)
        self.widget.setMinimumSize(QtCore.QSize(0, 0))
        self.widget.setObjectName("widget")
        self.verticalLayout.addWidget(self.widget)
        spacerItem = QtWidgets.QSpacerItem(20, 40,
                                           QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem)
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setMinimumSize(QtCore.QSize(0, 0))
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.verticalLayout.addWidget(self.progressBar)
        spacerItem1 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem1)
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Elephant")
        font.setPointSize(44)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        mainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(mainWindow)
        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):
        _translate = QtCore.QCoreApplication.translate
        mainWindow.setWindowTitle(_translate("mainWindow", "Loading"))
        self.pushButton.setText(_translate("mainWindow", "BEST PRODUCTIONS"))
예제 #5
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1409, 1146)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.author_label_2 = QtWidgets.QLabel(self.centralwidget)
        self.author_label_2.setMaximumSize(QtCore.QSize(16777215, 50))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(20)
        self.author_label_2.setFont(font)
        self.author_label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.author_label_2.setObjectName("author_label_2")
        self.verticalLayout_3.addWidget(self.author_label_2)
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.author_label = QtWidgets.QLabel(self.centralwidget)
        self.author_label.setMinimumSize(QtCore.QSize(200, 30))
        self.author_label.setMaximumSize(QtCore.QSize(16777215, 30))
        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(-1)
        font.setBold(True)
        font.setWeight(75)
        self.author_label.setFont(font)
        self.author_label.setStyleSheet(
            "QStackedWidget, QLabel, QPushButton, QRadioButton, QCheckBox, \n"
            "QGroupBox, QStatusBar, QToolButton, QComboBox, QDialog {\n"
            "    background-color: #222222;\n"
            "    color: #BBBBBB;\n"
            "    font-family: \"Calibri\";\n"
            "    font-size:13px;\n"
            "    font-weight:bold;\n"
            "}")
        self.author_label.setAlignment(QtCore.Qt.AlignCenter)
        self.author_label.setObjectName("author_label")
        self.horizontalLayout_7.addWidget(self.author_label)
        self.verticalLayout_3.addLayout(self.horizontalLayout_7)
        self.splitter = QtWidgets.QSplitter(self.centralwidget)
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
        self.splitter.setObjectName("splitter")
        self.groupBox = QtWidgets.QGroupBox(self.splitter)
        self.groupBox.setMinimumSize(QtCore.QSize(500, 0))
        self.groupBox.setMaximumSize(QtCore.QSize(1300, 16777215))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.groupBox.setFont(font)
        self.groupBox.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox.setObjectName("groupBox")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox)
        self.verticalLayout.setObjectName("verticalLayout")
        self.input_video_widget = QVideoWidget(self.groupBox)
        self.input_video_widget.setMinimumSize(QtCore.QSize(100, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.input_video_widget.setFont(font)
        self.input_video_widget.setObjectName("input_video_widget")
        self.verticalLayout.addWidget(self.input_video_widget)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label = QtWidgets.QLabel(self.groupBox)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.horizontalLayout_2.addWidget(self.label)
        self.predict_progressBar = QtWidgets.QProgressBar(self.groupBox)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.predict_progressBar.setFont(font)
        self.predict_progressBar.setProperty("value", 0)
        self.predict_progressBar.setObjectName("predict_progressBar")
        self.horizontalLayout_2.addWidget(self.predict_progressBar)
        self.fps_label = QtWidgets.QLabel(self.groupBox)
        self.fps_label.setMinimumSize(QtCore.QSize(0, 0))
        self.fps_label.setMaximumSize(QtCore.QSize(16777215, 20))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.fps_label.setFont(font)
        self.fps_label.setObjectName("fps_label")
        self.horizontalLayout_2.addWidget(self.fps_label)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.import_media_pushButton = QtWidgets.QPushButton(self.groupBox)
        self.import_media_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.import_media_pushButton.setFont(font)
        self.import_media_pushButton.setStyleSheet(
            "QPushButton{\n"
            "    background-color:#2828FF;\n"
            "    color:#ffffff;\n"
            "    border-radius: 5px;\n"
            "}\n"
            "\n"
            "QPushButton:hover{\n"
            "    color:#FFFFFF;\n"
            "    background:#9393FF;\n"
            "}\n"
            "")
        self.import_media_pushButton.setObjectName("import_media_pushButton")
        self.horizontalLayout.addWidget(self.import_media_pushButton)
        self.start_predict_pushButton = QtWidgets.QPushButton(self.groupBox)
        self.start_predict_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.start_predict_pushButton.setFont(font)
        self.start_predict_pushButton.setStyleSheet(
            "QPushButton{\n"
            "    background-color:#16A085;\n"
            "    color:#ffffff;\n"
            "    border-radius: 5px;\n"
            "}\n"
            "\n"
            "QPushButton:hover{\n"
            "    color:#FFFFFF;\n"
            "    background:#2EE1C1;\n"
            "}\n"
            "")
        self.start_predict_pushButton.setObjectName("start_predict_pushButton")
        self.horizontalLayout.addWidget(self.start_predict_pushButton)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.groupBox_2 = QtWidgets.QGroupBox(self.splitter)
        self.groupBox_2.setMinimumSize(QtCore.QSize(500, 0))
        self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.groupBox_2.setFont(font)
        self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox_2.setObjectName("groupBox_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_2)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.output_video_widget = QVideoWidget(self.groupBox_2)
        self.output_video_widget.setMinimumSize(QtCore.QSize(100, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.output_video_widget.setFont(font)
        self.output_video_widget.setObjectName("output_video_widget")
        self.verticalLayout_2.addWidget(self.output_video_widget)
        self.open_predict_file_pushButton = QtWidgets.QPushButton(
            self.groupBox_2)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.open_predict_file_pushButton.setFont(font)
        self.open_predict_file_pushButton.setObjectName(
            "open_predict_file_pushButton")
        self.verticalLayout_2.addWidget(self.open_predict_file_pushButton)
        self.verticalLayout_3.addWidget(self.splitter)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem1)
        self.video_horizontalSlider = QtWidgets.QSlider(self.centralwidget)
        self.video_horizontalSlider.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.video_horizontalSlider.setFont(font)
        self.video_horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.video_horizontalSlider.setObjectName("video_horizontalSlider")
        self.horizontalLayout_4.addWidget(self.video_horizontalSlider)
        self.video_percent_label = QtWidgets.QLabel(self.centralwidget)
        self.video_percent_label.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.video_percent_label.setFont(font)
        self.video_percent_label.setObjectName("video_percent_label")
        self.horizontalLayout_4.addWidget(self.video_percent_label)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem2)
        self.verticalLayout_3.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem3 = QtWidgets.QSpacerItem(40, 25,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem3)
        self.play_pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.play_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        self.play_pushButton.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.play_pushButton.setFont(font)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("icon/play.png"), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        self.play_pushButton.setIcon(icon)
        self.play_pushButton.setObjectName("play_pushButton")
        self.horizontalLayout_3.addWidget(self.play_pushButton)
        self.pause_pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pause_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        self.pause_pushButton.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.pause_pushButton.setFont(font)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("icon/pause.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pause_pushButton.setIcon(icon1)
        self.pause_pushButton.setObjectName("pause_pushButton")
        self.horizontalLayout_3.addWidget(self.pause_pushButton)
        spacerItem4 = QtWidgets.QSpacerItem(40, 25,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem4)
        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_3.setMaximumSize(QtCore.QSize(16777215, 150))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.groupBox_3.setFont(font)
        self.groupBox_3.setObjectName("groupBox_3")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.groupBox_3)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.predict_info_plainTextEdit = QtWidgets.QPlainTextEdit(
            self.groupBox_3)
        self.predict_info_plainTextEdit.setMaximumSize(
            QtCore.QSize(16777215, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.predict_info_plainTextEdit.setFont(font)
        self.predict_info_plainTextEdit.setObjectName(
            "predict_info_plainTextEdit")
        self.horizontalLayout_6.addWidget(self.predict_info_plainTextEdit)
        self.horizontalLayout_5.addWidget(self.groupBox_3)
        self.verticalLayout_3.addLayout(self.horizontalLayout_5)
        self.gpu_info_chart = QChartView(self.centralwidget)
        self.gpu_info_chart.setMaximumSize(QtCore.QSize(16777215, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.gpu_info_chart.setFont(font)
        self.gpu_info_chart.setObjectName("gpu_info_chart")
        self.verticalLayout_3.addWidget(self.gpu_info_chart)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1409, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.author_label_2.setText(
            _translate("MainWindow",
                       "Intelligent Monitoring System of Construction Site"))
        self.author_label.setText(
            _translate("MainWindow", "Product by: HinGwenWoong"))
        self.groupBox.setTitle(_translate("MainWindow", "Input Media"))
        self.label.setText(_translate("MainWindow", "Processing:"))
        self.fps_label.setText(_translate("MainWindow", "(FPS)"))
        self.import_media_pushButton.setStatusTip(
            _translate("MainWindow", "Import video to predict"))
        self.import_media_pushButton.setText(_translate(
            "MainWindow", "Import"))
        self.start_predict_pushButton.setStatusTip(
            _translate("MainWindow", "Predict the vedio"))
        self.start_predict_pushButton.setText(
            _translate("MainWindow", "Predict"))
        self.groupBox_2.setTitle(_translate("MainWindow", "Output Media"))
        self.open_predict_file_pushButton.setText(
            _translate("MainWindow", "Open in Browser"))
        self.video_percent_label.setText(_translate("MainWindow", "0 %"))
        self.play_pushButton.setText(_translate("MainWindow", "Play"))
        self.pause_pushButton.setText(_translate("MainWindow", "Pause"))
        self.groupBox_3.setTitle(_translate("MainWindow", "Predict Info:"))
예제 #6
0
class VideoPlayer(QWidget):

    def __init__(self, aPath, parent=None):
        super(VideoPlayer, self).__init__(parent)

        self.setAttribute(Qt.WA_NoSystemBackground, True)
        self.setAcceptDrops(True)
        
        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback)
        self.mediaPlayer.setVolume(80)
        
        self.videoWidget = QVideoWidget(self)
        self.videoWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.videoWidget.setMinimumSize(QSize(640, 360))
        
        self.lbl = QLineEdit('00:00:00')
        self.lbl.setReadOnly(True)
        self.lbl.setFixedWidth(70)
        self.lbl.setUpdatesEnabled(True)
        self.lbl.setStyleSheet(stylesheet(self))

        self.elbl = QLineEdit('00:00:00')
        self.elbl.setReadOnly(True)
        self.elbl.setFixedWidth(70)
        self.elbl.setUpdatesEnabled(True)
        self.elbl.setStyleSheet(stylesheet(self))

        self.playButton = QPushButton()
        self.playButton.setEnabled(False)
        self.playButton.setFixedWidth(32)
        self.playButton.setStyleSheet("background-color: black")
        self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
        self.playButton.clicked.connect(self.play)

        self.positionSlider = QSlider(Qt.Horizontal, self)
        self.positionSlider.setStyleSheet(stylesheet(self))
        self.positionSlider.setRange(0, 100)
        self.positionSlider.sliderMoved.connect(self.setPosition)
        self.positionSlider.sliderMoved.connect(self.handleLabel)
        self.positionSlider.setSingleStep(2)
        self.positionSlider.setPageStep(20)
        self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True)

        self.clip = QApplication.clipboard()
        self.process = QProcess(self)
        self.process.readyRead.connect(self.dataReady)
        self.process.finished.connect(self.playFromURL)

        self.myurl = ""

        # channel list
        self.channelList = QListView(self)
        self.channelList.setMinimumSize(QSize(150, 0))
        self.channelList.setMaximumSize(QSize(150, 4000))
        self.channelList.setFrameShape(QFrame.Box)
        self.channelList.setObjectName("channelList")
        self.channelList.setStyleSheet("background-color: black; color: #585858;")
        self.channelList.setFocus()
        # for adding items to list must create a model
        self.model = QStandardItemModel()
        self.channelList.setModel(self.model)

        self.controlLayout = QHBoxLayout()
        self.controlLayout.setContentsMargins(5, 0, 5, 0)
        self.controlLayout.addWidget(self.playButton)
        self.controlLayout.addWidget(self.lbl)
        self.controlLayout.addWidget(self.positionSlider)
        self.controlLayout.addWidget(self.elbl)

        self.mainLayout = QHBoxLayout()

        # contains video and cotrol widgets to the left side
        self.layout = QVBoxLayout()
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.layout.addWidget(self.videoWidget)
        self.layout.addLayout(self.controlLayout)
        
        # adds channels list to the right
        self.mainLayout.addLayout(self.layout)
        self.mainLayout.addWidget(self.channelList)

        self.setLayout(self.mainLayout)

        self.myinfo = "©2020\nTIVOpy v1.0"

        self.widescreen = True

        #### shortcuts ####
        self.shortcut = QShortcut(QKeySequence("q"), self)
        self.shortcut.activated.connect(self.handleQuit)
        self.shortcut = QShortcut(QKeySequence("u"), self)
        self.shortcut.activated.connect(self.playFromURL)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Space), self)
        self.shortcut.activated.connect(self.play)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_F), self)
        self.shortcut.activated.connect(self.handleFullscreen)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Escape), self)
        self.shortcut.activated.connect(self.exitFullscreen)
        self.shortcut.activated.connect(self.handleFullscreen)
        self.shortcut = QShortcut(QKeySequence("i"), self)
        self.shortcut.activated.connect(self.handleInfo)
        self.shortcut = QShortcut(QKeySequence("s"), self)
        self.shortcut.activated.connect(self.toggleSlider)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self)
        self.shortcut.activated.connect(self.forwardSlider)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self)
        self.shortcut.activated.connect(self.backSlider)

        self.mediaPlayer.setVideoOutput(self.videoWidget)
        self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
        self.mediaPlayer.positionChanged.connect(self.positionChanged)
        self.mediaPlayer.positionChanged.connect(self.handleLabel)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
        self.mediaPlayer.error.connect(self.handleError)

        self.populateChannelList()
        self.selectChannel()
        self.initialPlay()

    def playFromURL(self):
        self.mediaPlayer.pause()
        self.myurl = self.clip.text()
        self.mediaPlayer.setMedia(QMediaContent(QUrl(self.myurl)))
        self.playButton.setEnabled(True)
        self.mediaPlayer.play()
        self.hideSlider()
        print(self.myurl)

    def dataReady(self):
        self.myurl = str(self.process.readAll(), encoding='utf8').rstrip()  ###
        self.myurl = self.myurl.partition("\n")[0]
        print(self.myurl)
        self.clip.setText(self.myurl)
        self.playFromURL()

    def play(self):
        if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
            self.mediaPlayer.pause()
        else:
            self.mediaPlayer.play()

    def mediaStateChanged(self, state):
        if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
            self.playButton.setIcon(
                self.style().standardIcon(QStyle.SP_MediaPause))
        else:
            self.playButton.setIcon(
                self.style().standardIcon(QStyle.SP_MediaPlay))

    def positionChanged(self, position):
        self.positionSlider.setValue(position)

    def durationChanged(self, duration):
        self.positionSlider.setRange(0, duration)
        mtime = QTime(0, 0, 0, 0)
        mtime = mtime.addMSecs(self.mediaPlayer.duration())
        self.elbl.setText(mtime.toString())

    def setPosition(self, position):
        self.mediaPlayer.setPosition(position)

    def handleError(self):
        self.playButton.setEnabled(False)
        print("Error: ", self.mediaPlayer.errorString())

    def handleQuit(self):
        self.mediaPlayer.stop()
        print("Goodbye ...")
        app.quit()

    def contextMenuRequested(self, point):
        menu = QMenu()
        actionURL = menu.addAction(QIcon.fromTheme("browser"), "URL from Clipboard (u)")
        menu.addSeparator()
        actionToggle = menu.addAction(QIcon.fromTheme("next"), "Show / Hide Channels (s)")
        actionFull = menu.addAction(QIcon.fromTheme("view-fullscreen"), "Fullscreen (f)")
        menu.addSeparator()
        actionInfo = menu.addAction(QIcon.fromTheme("help-about"), "About (i)")
        menu.addSeparator()
        actionQuit = menu.addAction(QIcon.fromTheme("application-exit"), "Exit (q)")

        actionQuit.triggered.connect(self.handleQuit)
        actionFull.triggered.connect(self.handleFullscreen)
        actionInfo.triggered.connect(self.handleInfo)
        actionToggle.triggered.connect(self.toggleSlider)
        actionURL.triggered.connect(self.playFromURL)
        menu.exec_(self.mapToGlobal(point))

    def wheelEvent(self, event):
        mscale = event.angleDelta().y() / 13
        self.mediaPlayer.setVolume(self.mediaPlayer.volume() + mscale)
        print("Volume: " + str(self.mediaPlayer.volume()))

    def mouseDoubleClickEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.handleFullscreen()

    def handleFullscreen(self):
        if self.windowState() and Qt.WindowFullScreen:
            self.showNormal()
        else:
            self.showFullScreen()

    def exitFullscreen(self):
        self.showNormal()

    def handleInfo(self):
        QMessageBox.about(self, "About", self.myinfo)

    def toggleSlider(self):
        if self.positionSlider.isVisible():
            self.hideSlider()
        else:
            self.showSlider()

    def hideSlider(self):
        self.channelList.hide()
        self.playButton.hide()
        self.lbl.hide()
        self.positionSlider.hide()
        self.elbl.hide()

    def showSlider(self):
        self.channelList.show()
        self.playButton.show()
        self.lbl.show()
        self.positionSlider.show()
        self.elbl.show()
        self.channelList.setFocus()

    def forwardSlider(self):
        self.mediaPlayer.setPosition(self.mediaPlayer.position() + 1000 * 60)

    def backSlider(self):
        self.mediaPlayer.setPosition(self.mediaPlayer.position() - 1000 * 60)

    def volumeUp(self):
        self.mediaPlayer.setVolume(self.mediaPlayer.volume() + 10)
        print("Volume: " + str(self.mediaPlayer.volume()))

    def volumeDown(self):
        self.mediaPlayer.setVolume(self.mediaPlayer.volume() - 10)
        print("Volume: " + str(self.mediaPlayer.volume()))

    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls():
            event.accept()
        elif event.mimeData().hasText():
            event.accept()
        else:
            event.ignore()

    def dropEvent(self, event):
        print("drop")
        if event.mimeData().hasUrls():
            url = event.mimeData().urls()[0].toString()
            print("url = ", url)
            self.mediaPlayer.stop()
            self.mediaPlayer.setMedia(QMediaContent(QUrl(url)))
            self.playButton.setEnabled(True)
            self.mediaPlayer.play()
        elif event.mimeData().hasText():
            mydrop = event.mimeData().text()
            print("generic url = ", mydrop)
            self.mediaPlayer.setMedia(QMediaContent(QUrl(mydrop)))
            self.playButton.setEnabled(True)
            self.mediaPlayer.play()
            self.hideSlider()

    def loadFilm(self, f):
        self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(f)))
        self.playButton.setEnabled(True)
        self.mediaPlayer.play()

    def populateChannelList(self):
        # file must be in same directory as the script
        FILEPATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "canaletv.txt")
        # lines from file with "channel name" -- "link"
        channelArray = []
        # split file by line and adding it to the array
        with open(FILEPATH) as f:
            for line in f:
                channelArray.append(line.rstrip())
        # dictionary with key = channel name and value = link
        self.channelDict = dict(ch.split(" -- ") for ch in channelArray)
        for channel in self.channelDict.keys():
            item = QStandardItem(channel)
            self.model.appendRow(item)

    def selectedItemBehavior(self, index):
    # gets the link for the selected channel and plays it
        itms = self.channelList.selectedIndexes()
        for it in itms:
            channel = it.data()
            link = self.channelDict[channel]
            self.mediaPlayer.setMedia(QMediaContent(QUrl(link)))
            self.play()

    def selectChannel(self):
    # selecting channel from sidebar calls selectedItemBehavior
        self.selModel = self.channelList.selectionModel()
        self.selModel.selectionChanged.connect(self.selectedItemBehavior)

    def initialPlay(self):
    # play somenting when app opens
        self.mediaPlayer.setMedia(QMediaContent(QUrl("https://vid.hls.protv.ro/proxhdn/proxhd_3_34/index.m3u8?1")))
        self.play()

    def handleLabel(self):
        self.lbl.clear()
        mtime = QTime(0, 0, 0, 0)
        self.time = mtime.addMSecs(self.mediaPlayer.position())
        self.lbl.setText(self.time.toString())
예제 #7
0
class Ui_window(object):
    def setupUi(self, window):
        window.setObjectName("window")
        window.resize(789, 614)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(window.sizePolicy().hasHeightForWidth())
        window.setSizePolicy(sizePolicy)
        self.wid = QtWidgets.QWidget(window)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.wid.sizePolicy().hasHeightForWidth())
        self.wid.setSizePolicy(sizePolicy)
        self.wid.setObjectName("wid")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.wid)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 0, 621, 381))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.videoWidget = QVideoWidget(self.verticalLayoutWidget)
        self.videoWidget.setEnabled(True)
        self.videoWidget.setMinimumSize(QtCore.QSize(100, 100))
        self.videoWidget.setObjectName("videoWidget")
        self.verticalLayout.addWidget(self.videoWidget)
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.wid)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 390, 621, 80))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.playButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.playButton.setText("")
        self.playButton.setObjectName("playButton")
        self.horizontalLayout_2.addWidget(self.playButton)
        self.positionSlider = QtWidgets.QSlider(self.horizontalLayoutWidget)
        self.positionSlider.setOrientation(QtCore.Qt.Horizontal)
        self.positionSlider.setObjectName("positionSlider")
        self.horizontalLayout_2.addWidget(self.positionSlider)
        self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.wid)
        self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 480, 621, 80))
        self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
        self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.pre_pb = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
        self.pre_pb.setObjectName("pre_pb")
        self.horizontalLayout_3.addWidget(self.pre_pb)
        self.post_pb = QtWidgets.QCheckBox(self.wid)
        self.post_pb.setObjectName("post_pb")
        self.post_pb.setGeometry(QtCore.QRect(655, 474, 150, 31))
        #self.horizontalLayout_3.addWidget(self.post_pb)
        self.separate_audio_pb = QtWidgets.QPushButton(self.wid)
        self.separate_audio_pb.setGeometry(QtCore.QRect(640, 10, 141, 31))
        self.separate_audio_pb.setObjectName("separate_audio_pb")
        self.play_chosen_pb = QtWidgets.QPushButton(self.wid)
        self.play_chosen_pb.setGeometry(QtCore.QRect(660, 504, 111, 31))
        self.play_chosen_pb.setObjectName("play_chosen_pb")
        window.setCentralWidget(self.wid)
        self.menuBar = QtWidgets.QMenuBar(window)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 789, 22))
        self.menuBar.setObjectName("menuBar")
        self.fileMenu = QtWidgets.QMenu(self.menuBar)
        self.fileMenu.setObjectName("fileMenu")
        window.setMenuBar(self.menuBar)
        self.statusbar = QtWidgets.QStatusBar(window)
        self.statusbar.setObjectName("statusbar")
        window.setStatusBar(self.statusbar)
        self.openAction = QtWidgets.QAction(window)
        self.openAction.setObjectName("openAction")
        self.exitAction = QtWidgets.QAction(window)
        self.exitAction.setObjectName("exitAction")
        self.fileMenu.addAction(self.openAction)
        self.fileMenu.addAction(self.exitAction)
        self.menuBar.addAction(self.fileMenu.menuAction())

        self.retranslateUi(window)
        QtCore.QMetaObject.connectSlotsByName(window)

    def retranslateUi(self, window):
        _translate = QtCore.QCoreApplication.translate
        window.setWindowTitle(_translate("window", "MainWindow"))
        self.pre_pb.setText(_translate("window", "Pre-Processing"))
        self.post_pb.setText(_translate("window", "Post-Processing"))
        self.separate_audio_pb.setText(_translate("window", "Separate Audio"))
        self.play_chosen_pb.setText(_translate("window", "Play Chosen"))
        self.fileMenu.setTitle(_translate("window", "File"))
        self.openAction.setText(_translate("window", "Open"))
        self.exitAction.setText(_translate("window", "Exit"))
예제 #8
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1409, 1146)
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.author_label_2 = QtWidgets.QLabel(self.centralwidget)
        self.author_label_2.setMaximumSize(QtCore.QSize(16777215, 50))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(20)
        self.author_label_2.setFont(font)
        self.author_label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.author_label_2.setObjectName("author_label_2")
        self.verticalLayout_3.addWidget(self.author_label_2)
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.author_label = QtWidgets.QLabel(self.centralwidget)
        self.author_label.setMinimumSize(QtCore.QSize(200, 30))
        self.author_label.setMaximumSize(QtCore.QSize(16777215, 30))
        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(-1)
        font.setBold(True)
        font.setWeight(75)
        self.author_label.setFont(font)
        self.author_label.setStyleSheet(
            "QStackedWidget, QLabel, QPushButton, QRadioButton, QCheckBox, \n"
            "QGroupBox, QStatusBar, QToolButton, QComboBox, QDialog {\n"
            "    background-color: #222222;\n"
            "    color: #BBBBBB;\n"
            "    font-family: \"Calibri\";\n"
            "    font-size:13px;\n"
            "    font-weight:bold;\n"
            "}")
        self.author_label.setAlignment(QtCore.Qt.AlignCenter)
        self.author_label.setObjectName("author_label")
        self.horizontalLayout_7.addWidget(self.author_label)
        self.verticalLayout_3.addLayout(self.horizontalLayout_7)
        self.splitter = QtWidgets.QSplitter(self.centralwidget)
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
        self.splitter.setObjectName("splitter")
        self.groupBox = QtWidgets.QGroupBox(self.splitter)
        self.groupBox.setMinimumSize(QtCore.QSize(350, 0))
        self.groupBox.setMaximumSize(QtCore.QSize(1300, 16777215))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.groupBox.setFont(font)
        self.groupBox.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox.setObjectName("groupBox")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox)
        self.verticalLayout.setObjectName("verticalLayout")
        self.input_media_tabWidget = QtWidgets.QTabWidget(self.groupBox)
        self.input_media_tabWidget.setObjectName("input_media_tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.tab)
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        self.input_video_widget = QVideoWidget(self.tab)
        self.input_video_widget.setMinimumSize(QtCore.QSize(100, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.input_video_widget.setFont(font)
        self.input_video_widget.setObjectName("input_video_widget")
        self.horizontalLayout_8.addWidget(self.input_video_widget)
        self.input_media_tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.tab_2)
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        self.input_real_time_label = QtWidgets.QLabel(self.tab_2)
        self.input_real_time_label.setObjectName("input_real_time_label")
        self.horizontalLayout_9.addWidget(self.input_real_time_label)
        self.input_media_tabWidget.addTab(self.tab_2, "")
        self.verticalLayout.addWidget(self.input_media_tabWidget)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label = QtWidgets.QLabel(self.groupBox)
        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(-1)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setStyleSheet("QLabel {\n"
                                 "    background-color: #543044;\n"
                                 "    color: #BBBBBB;\n"
                                 "    font-family: \"Calibri\";\n"
                                 "    font-size:13px;\n"
                                 "    font-weight:bold;\n"
                                 "}")
        self.label.setObjectName("label")
        self.horizontalLayout_2.addWidget(self.label)
        self.predict_progressBar = QtWidgets.QProgressBar(self.groupBox)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.predict_progressBar.setFont(font)
        self.predict_progressBar.setStyleSheet("QProgressBar{\n"
                                               "border:2px solid grey;\n"
                                               "border-radius:5px;\n"
                                               "text-align: center;\n"
                                               "}\n"
                                               "\n"
                                               "\n"
                                               "QProgressBar::chunk {\n"
                                               "background-color:#CD96CD;\n"
                                               "width:10px;\n"
                                               "margin:0.5px;\n"
                                               "}")
        self.predict_progressBar.setMinimum(0)
        self.predict_progressBar.setProperty("value", 19)
        self.predict_progressBar.setObjectName("predict_progressBar")
        self.horizontalLayout_2.addWidget(self.predict_progressBar)
        self.fps_label = QtWidgets.QLabel(self.groupBox)
        self.fps_label.setMinimumSize(QtCore.QSize(0, 0))
        self.fps_label.setMaximumSize(QtCore.QSize(16777215, 20))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.fps_label.setFont(font)
        self.fps_label.setObjectName("fps_label")
        self.horizontalLayout_2.addWidget(self.fps_label)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_13.setObjectName("horizontalLayout_13")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Maximum,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_13.addItem(spacerItem1)
        self.weight_label = QtWidgets.QLabel(self.groupBox)
        self.weight_label.setMinimumSize(QtCore.QSize(0, 25))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setBold(True)
        font.setWeight(75)
        self.weight_label.setFont(font)
        self.weight_label.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.weight_label.setStyleSheet("")
        self.weight_label.setAlignment(QtCore.Qt.AlignCenter)
        self.weight_label.setObjectName("weight_label")
        self.horizontalLayout_13.addWidget(self.weight_label)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Maximum,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_13.addItem(spacerItem2)
        self.real_time_checkBox = QtWidgets.QCheckBox(self.groupBox)
        self.real_time_checkBox.setMinimumSize(QtCore.QSize(0, 25))
        self.real_time_checkBox.setMaximumSize(QtCore.QSize(130, 16777215))
        self.real_time_checkBox.setObjectName("real_time_checkBox")
        self.horizontalLayout_13.addWidget(self.real_time_checkBox)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Maximum,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_13.addItem(spacerItem3)
        self.verticalLayout.addLayout(self.horizontalLayout_13)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem4 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Fixed,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem4)
        self.import_media_pushButton = QtWidgets.QPushButton(self.groupBox)
        self.import_media_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.import_media_pushButton.setFont(font)
        self.import_media_pushButton.setStyleSheet(
            "QPushButton{\n"
            "    background-color:#2828FF;\n"
            "    color:#ffffff;\n"
            "    border-radius: 5px;\n"
            "}\n"
            "\n"
            "QPushButton:hover{\n"
            "    color:#FFFFFF;\n"
            "    background:#9393FF;\n"
            "}\n"
            "")
        self.import_media_pushButton.setObjectName("import_media_pushButton")
        self.horizontalLayout.addWidget(self.import_media_pushButton)
        spacerItem5 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Fixed,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem5)
        self.start_predict_pushButton = QtWidgets.QPushButton(self.groupBox)
        self.start_predict_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.start_predict_pushButton.setFont(font)
        self.start_predict_pushButton.setStyleSheet(
            "QPushButton{\n"
            "    background-color:#16A085;\n"
            "    color:#ffffff;\n"
            "    border-radius: 5px;\n"
            "}\n"
            "\n"
            "QPushButton:hover{\n"
            "    color:#FFFFFF;\n"
            "    background:#2EE1C1;\n"
            "}\n"
            "")
        self.start_predict_pushButton.setObjectName("start_predict_pushButton")
        self.horizontalLayout.addWidget(self.start_predict_pushButton)
        spacerItem6 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Fixed,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem6)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.groupBox_2 = QtWidgets.QGroupBox(self.splitter)
        self.groupBox_2.setMinimumSize(QtCore.QSize(500, 0))
        self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.groupBox_2.setFont(font)
        self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter)
        self.groupBox_2.setObjectName("groupBox_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_2)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.output_media_tabWidget = QtWidgets.QTabWidget(self.groupBox_2)
        self.output_media_tabWidget.setObjectName("output_media_tabWidget")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.tab_3)
        self.horizontalLayout_10.setObjectName("horizontalLayout_10")
        self.output_video_widget = QVideoWidget(self.tab_3)
        self.output_video_widget.setMinimumSize(QtCore.QSize(100, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.output_video_widget.setFont(font)
        self.output_video_widget.setObjectName("output_video_widget")
        self.horizontalLayout_10.addWidget(self.output_video_widget)
        self.output_media_tabWidget.addTab(self.tab_3, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.tab_4)
        self.horizontalLayout_11.setObjectName("horizontalLayout_11")
        self.output_real_time_label = QtWidgets.QLabel(self.tab_4)
        self.output_real_time_label.setObjectName("output_real_time_label")
        self.horizontalLayout_11.addWidget(self.output_real_time_label)
        self.output_media_tabWidget.addTab(self.tab_4, "")
        self.verticalLayout_2.addWidget(self.output_media_tabWidget)
        self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_12.setObjectName("horizontalLayout_12")
        spacerItem7 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Fixed,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_12.addItem(spacerItem7)
        self.open_predict_file_pushButton = QtWidgets.QPushButton(
            self.groupBox_2)
        self.open_predict_file_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.open_predict_file_pushButton.setFont(font)
        self.open_predict_file_pushButton.setStyleSheet(
            "QPushButton{\n"
            "    background-color:#d71345;\n"
            "    color:#ffffff;\n"
            "    border-radius: 5px;\n"
            "}\n"
            "\n"
            "QPushButton:hover{\n"
            "    color:#FFFFFF;\n"
            "    background:#c76968;\n"
            "}\n"
            "")
        self.open_predict_file_pushButton.setObjectName(
            "open_predict_file_pushButton")
        self.horizontalLayout_12.addWidget(self.open_predict_file_pushButton)
        spacerItem8 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Fixed,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_12.addItem(spacerItem8)
        self.verticalLayout_2.addLayout(self.horizontalLayout_12)
        self.verticalLayout_3.addWidget(self.splitter)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        spacerItem9 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem9)
        self.video_horizontalSlider = QtWidgets.QSlider(self.centralwidget)
        self.video_horizontalSlider.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.video_horizontalSlider.setFont(font)
        self.video_horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.video_horizontalSlider.setObjectName("video_horizontalSlider")
        self.horizontalLayout_4.addWidget(self.video_horizontalSlider)
        self.video_percent_label = QtWidgets.QLabel(self.centralwidget)
        self.video_percent_label.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.video_percent_label.setFont(font)
        self.video_percent_label.setObjectName("video_percent_label")
        self.horizontalLayout_4.addWidget(self.video_percent_label)
        spacerItem10 = QtWidgets.QSpacerItem(40, 20,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem10)
        self.verticalLayout_3.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem11 = QtWidgets.QSpacerItem(40, 25,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem11)
        self.play_pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.play_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        self.play_pushButton.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.play_pushButton.setFont(font)
        icon = QtGui.QIcon()
        icon.addPixmap(
            QtGui.QPixmap("C:/Users/PeterH/.designer/backup/icon/play.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.play_pushButton.setIcon(icon)
        self.play_pushButton.setObjectName("play_pushButton")
        self.horizontalLayout_3.addWidget(self.play_pushButton)
        self.pause_pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pause_pushButton.setMinimumSize(QtCore.QSize(0, 25))
        self.pause_pushButton.setMaximumSize(QtCore.QSize(16777215, 35))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.pause_pushButton.setFont(font)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(
            QtGui.QPixmap("C:/Users/PeterH/.designer/backup/icon/pause.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pause_pushButton.setIcon(icon1)
        self.pause_pushButton.setObjectName("pause_pushButton")
        self.horizontalLayout_3.addWidget(self.pause_pushButton)
        spacerItem12 = QtWidgets.QSpacerItem(40, 25,
                                             QtWidgets.QSizePolicy.Expanding,
                                             QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem12)
        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_3.setMaximumSize(QtCore.QSize(16777215, 150))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.groupBox_3.setFont(font)
        self.groupBox_3.setObjectName("groupBox_3")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.groupBox_3)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.predict_info_plainTextEdit = QtWidgets.QPlainTextEdit(
            self.groupBox_3)
        self.predict_info_plainTextEdit.setMaximumSize(
            QtCore.QSize(16777215, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.predict_info_plainTextEdit.setFont(font)
        self.predict_info_plainTextEdit.setStyleSheet(
            "\n"
            "QPlainTextEdit {\n"
            "    background-color: cornsilk;\n"
            "    selection-color: #0a214c; \n"
            "    selection-background-color: #C19A6B;\n"
            "}\n"
            "")
        self.predict_info_plainTextEdit.setObjectName(
            "predict_info_plainTextEdit")
        self.horizontalLayout_6.addWidget(self.predict_info_plainTextEdit)
        self.horizontalLayout_5.addWidget(self.groupBox_3)
        self.verticalLayout_3.addLayout(self.horizontalLayout_5)
        self.gpu_info_chart = QChartView(self.centralwidget)
        self.gpu_info_chart.setMaximumSize(QtCore.QSize(16777215, 100))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.gpu_info_chart.setFont(font)
        self.gpu_info_chart.setObjectName("gpu_info_chart")
        self.verticalLayout_3.addWidget(self.gpu_info_chart)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1409, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.input_media_tabWidget.setCurrentIndex(0)
        self.output_media_tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.author_label_2.setText(
            _translate("MainWindow",
                       "Intelligent Monitoring System of Construction Site"))
        self.author_label.setText(
            _translate("MainWindow", "Product by: HinGwenWoong"))
        self.groupBox.setTitle(_translate("MainWindow", "Input Media"))
        self.input_media_tabWidget.setTabText(
            self.input_media_tabWidget.indexOf(self.tab),
            _translate("MainWindow", "结果"))
        self.input_real_time_label.setText(
            _translate("MainWindow", "HinGwenWoong"))
        self.input_media_tabWidget.setTabText(
            self.input_media_tabWidget.indexOf(self.tab_2),
            _translate("MainWindow", "实时推理"))
        self.label.setText(_translate("MainWindow", "  Processing:  "))
        self.fps_label.setText(_translate("MainWindow", "(FPS)"))
        self.weight_label.setText(_translate("MainWindow", "weight path:"))
        self.real_time_checkBox.setText(
            _translate("MainWindow", "Real Time Predict"))
        self.import_media_pushButton.setStatusTip(
            _translate("MainWindow", "Import video to predict"))
        self.import_media_pushButton.setText(_translate(
            "MainWindow", "Import"))
        self.start_predict_pushButton.setStatusTip(
            _translate("MainWindow", "Predict the vedio"))
        self.start_predict_pushButton.setText(
            _translate("MainWindow", "Predict"))
        self.groupBox_2.setTitle(_translate("MainWindow", "Output Media"))
        self.output_media_tabWidget.setTabText(
            self.output_media_tabWidget.indexOf(self.tab_3),
            _translate("MainWindow", "结果"))
        self.output_real_time_label.setText(
            _translate("MainWindow", "HinGwenWoong"))
        self.output_media_tabWidget.setTabText(
            self.output_media_tabWidget.indexOf(self.tab_4),
            _translate("MainWindow", "实时推理"))
        self.open_predict_file_pushButton.setText(
            _translate("MainWindow", "Open in Browser"))
        self.video_percent_label.setText(_translate("MainWindow", "0 %"))
        self.play_pushButton.setText(_translate("MainWindow", "Play"))
        self.pause_pushButton.setText(_translate("MainWindow", "Pause"))
        self.groupBox_3.setTitle(_translate("MainWindow", "Predict Info:"))
예제 #9
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(706, 493)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/plugins/Video_UAV_Tracker/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Form.setWindowIcon(icon)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_3 = QtWidgets.QPushButton(Form)
        font = QtGui.QFont()
        font.setKerning(True)
        self.pushButton_3.setFont(font)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/VgisIcon/Hand-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.pushButton_3.setIcon(icon1)
        self.pushButton_3.setAutoExclusive(False)
        self.pushButton_3.setAutoDefault(False)
        self.pushButton_3.setDefault(False)
        self.pushButton_3.setFlat(False)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.toolButton_6 = QtWidgets.QToolButton(Form)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/plugins/Video_UAV_Tracker/iconNewTabEditorConsole.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_6.setIcon(icon2)
        self.toolButton_6.setObjectName("toolButton_6")
        self.horizontalLayout.addWidget(self.toolButton_6)
        spacerItem = QtWidgets.QSpacerItem(23, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.toolButton_4 = QtWidgets.QToolButton(Form)
        self.toolButton_4.setStyleSheet("background: url(/mnt/574916AB2EEEC400/LAVORO/Sviluppo_VUT_StandAlone/Progetto_VUT/115757-magic-marker-icon-people-things-hand22-sc48.png)")
        self.toolButton_4.setObjectName("toolButton_4")
        self.horizontalLayout.addWidget(self.toolButton_4)
        self.toolButton_5 = QtWidgets.QToolButton(Form)
        self.toolButton_5.setObjectName("toolButton_5")
        self.horizontalLayout.addWidget(self.toolButton_5)
        self.verticalLayout_3.addLayout(self.horizontalLayout)
        self.dockWidget_2 = QtWidgets.QDockWidget(Form)
        self.dockWidget_2.setFeatures(QtWidgets.QDockWidget.NoDockWidgetFeatures)
        self.dockWidget_2.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea)
        self.dockWidget_2.setObjectName("dockWidget_2")
        self.dockWidgetContents_7 = QtWidgets.QWidget()
        self.dockWidgetContents_7.setObjectName("dockWidgetContents_7")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.dockWidgetContents_7)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.video_frame = QVideoWidget(Form)
        p = self.video_frame.palette()
        p.setColor(QtGui.QPalette.Window, QtCore.Qt.black)
        self.video_frame.setPalette(p)
        self.video_frame.setAttribute(QtCore.Qt.WA_OpaquePaintEvent)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.video_frame.sizePolicy().hasHeightForWidth())
        self.video_frame.setSizePolicy(sizePolicy)
        self.video_frame.setMinimumSize(QtCore.QSize(200, 200))
        self.video_frame.setStyleSheet("background-color: rgb(0, 0, 0);")
        self.video_frame.setObjectName("video_frame")
        self.verticalLayout.addWidget(self.video_frame)
        self.horizontalSlider = QtWidgets.QSlider(self.dockWidgetContents_7)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName("horizontalSlider")
        self.verticalLayout.addWidget(self.horizontalSlider)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem1 = QtWidgets.QSpacerItem(98, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.toolButton_11 = QtWidgets.QToolButton(self.dockWidgetContents_7)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowLeft.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.toolButton_11.setIcon(icon3)
        self.toolButton_11.setObjectName("toolButton_11")
        self.horizontalLayout_3.addWidget(self.toolButton_11)
        self.SkipBacktoolButton_8 = QtWidgets.QToolButton(self.dockWidgetContents_7)
        self.SkipBacktoolButton_8.setStyleSheet("")
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasPrev.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.SkipBacktoolButton_8.setIcon(icon4)
        self.SkipBacktoolButton_8.setObjectName("SkipBacktoolButton_8")
        self.horizontalLayout_3.addWidget(self.SkipBacktoolButton_8)
        self.playButton = QtWidgets.QToolButton(self.dockWidgetContents_7)
        self.playButton.setObjectName("playButton")
        self.horizontalLayout_3.addWidget(self.playButton)
        self.muteButton = QtWidgets.QToolButton(self.dockWidgetContents_7)
        self.muteButton.setText("")
        self.muteButton.setObjectName("muteButton")
        self.horizontalLayout_3.addWidget(self.muteButton)
        self.replayPosition_label = QtWidgets.QLabel(self.dockWidgetContents_7)
        self.replayPosition_label.setObjectName("replayPosition_label")
        self.horizontalLayout_3.addWidget(self.replayPosition_label)
        self.SkipFortoolButton_9 = QtWidgets.QToolButton(self.dockWidgetContents_7)
        self.SkipFortoolButton_9.setStyleSheet("")
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasNext.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.SkipFortoolButton_9.setIcon(icon5)
        self.SkipFortoolButton_9.setObjectName("SkipFortoolButton_9")
        self.horizontalLayout_3.addWidget(self.SkipFortoolButton_9)
        self.toolButton_12 = QtWidgets.QToolButton(self.dockWidgetContents_7)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowRight.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.toolButton_12.setIcon(icon6)
        self.toolButton_12.setObjectName("toolButton_12")
        self.horizontalLayout_3.addWidget(self.toolButton_12)
        spacerItem2 = QtWidgets.QSpacerItem(98, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1)
        self.dockWidget_2.setWidget(self.dockWidgetContents_7)
        self.verticalLayout_3.addWidget(self.dockWidget_2)
        self.dockWidget_4 = QtWidgets.QDockWidget(Form)
        self.dockWidget_4.setMaximumSize(QtCore.QSize(524287, 121))
        self.dockWidget_4.setFeatures(QtWidgets.QDockWidget.NoDockWidgetFeatures)
        self.dockWidget_4.setAllowedAreas(QtCore.Qt.BottomDockWidgetArea)
        self.dockWidget_4.setObjectName("dockWidget_4")
        self.dockWidgetContents_6 = QtWidgets.QWidget()
        self.dockWidgetContents_6.setObjectName("dockWidgetContents_6")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.dockWidgetContents_6)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label = QtWidgets.QLabel(self.dockWidgetContents_6)
        self.label.setObjectName("label")
        self.verticalLayout_2.addWidget(self.label)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.pushButtonCutA_6 = QtWidgets.QPushButton(self.dockWidgetContents_6)
        self.pushButtonCutA_6.setEnabled(True)
        self.pushButtonCutA_6.setObjectName("pushButtonCutA_6")
        self.horizontalLayout_2.addWidget(self.pushButtonCutA_6)
        self.pushButtonCutB_6 = QtWidgets.QPushButton(self.dockWidgetContents_6)
        self.pushButtonCutB_6.setObjectName("pushButtonCutB_6")
        self.horizontalLayout_2.addWidget(self.pushButtonCutB_6)
        self.label_7 = QtWidgets.QLabel(self.dockWidgetContents_6)
        self.label_7.setObjectName("label_7")
        self.horizontalLayout_2.addWidget(self.label_7)
        self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self.dockWidgetContents_6)
        self.doubleSpinBox_2.setObjectName("doubleSpinBox_2")
        self.horizontalLayout_2.addWidget(self.doubleSpinBox_2)
        self.comboBox_6 = QtWidgets.QComboBox(self.dockWidgetContents_6)
        self.comboBox_6.setObjectName("comboBox_6")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_6)
        self.pushButton_5 = QtWidgets.QPushButton(self.dockWidgetContents_6)
        self.pushButton_5.setObjectName("pushButton_5")
        self.horizontalLayout_2.addWidget(self.pushButton_5)
        self.pushButtonCut_2 = QtWidgets.QPushButton(self.dockWidgetContents_6)
        self.pushButtonCut_2.setObjectName("pushButtonCut_2")
        self.horizontalLayout_2.addWidget(self.pushButtonCut_2)
        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
        self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents_6)
        self.progressBar.setProperty("value", 24)
        self.progressBar.setObjectName("progressBar")
        self.verticalLayout_2.addWidget(self.progressBar)
        self.dockWidget_4.setWidget(self.dockWidgetContents_6)
        self.verticalLayout_3.addWidget(self.dockWidget_4)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Video UAV Tracker - Player"))
        self.pushButton_3.setToolTip(_translate("Form", "<html><head/><body><p>Move along Video directly clicking on gps track</p></body></html>"))
        self.pushButton_3.setText(_translate("Form", "MapTool   "))
        self.toolButton_6.setToolTip(_translate("Form", "<html><head/><body><p>Add point</p></body></html>"))
        self.toolButton_6.setText(_translate("Form", "o"))
        self.toolButton_4.setToolTip(_translate("Form", "<html><head/><body><p>Enable extract frames toolbox</p><p><br/></p></body></html>"))
        self.toolButton_4.setText(_translate("Form", "Extract frames"))
        self.toolButton_5.setText(_translate("Form", "Close"))
        self.toolButton_11.setText(_translate("Form", "<<"))
        self.SkipBacktoolButton_8.setText(_translate("Form", "<"))
        self.playButton.setText(_translate("Form", "> / ||"))
        self.replayPosition_label.setText(_translate("Form", "-:- / -:-"))
        self.SkipFortoolButton_9.setText(_translate("Form", ">"))
        self.toolButton_12.setText(_translate("Form", ">>"))
        self.label.setText(_translate("Form", "Export Frames Tool"))
        self.pushButtonCutA_6.setToolTip(_translate("Form", "<html><head/><body><p>Export from actual Video Frame</p></body></html>"))
        self.pushButtonCutA_6.setText(_translate("Form", "From A"))
        self.pushButtonCutB_6.setToolTip(_translate("Form", "<html><head/><body><p>Export to actual Video Frame</p></body></html>"))
        self.pushButtonCutB_6.setText(_translate("Form", "To B"))
        self.label_7.setText(_translate("Form", "Pick one frame every"))
        self.comboBox_6.setItemText(0, _translate("Form", "meters"))
        self.comboBox_6.setItemText(1, _translate("Form", "seconds"))
        self.pushButton_5.setText(_translate("Form", "Cancel"))
        self.pushButtonCut_2.setText(_translate("Form", "Extract!"))
예제 #10
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1318, 719)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.centralwidget.sizePolicy().hasHeightForWidth())
        self.centralwidget.setSizePolicy(sizePolicy)
        self.centralwidget.setObjectName("centralwidget")
        self.startButton = QtWidgets.QPushButton(self.centralwidget)
        self.startButton.setGeometry(QtCore.QRect(10, 630, 231, 41))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.startButton.sizePolicy().hasHeightForWidth())
        self.startButton.setSizePolicy(sizePolicy)
        self.startButton.setMaximumSize(QtCore.QSize(16777215, 41))
        font = QtGui.QFont()
        font.setPointSize(14)
        self.startButton.setFont(font)
        self.startButton.setObjectName("startButton")
        self.EmotionLabel = QtWidgets.QLabel(self.centralwidget)
        self.EmotionLabel.setGeometry(QtCore.QRect(10, 20, 400, 21))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.EmotionLabel.sizePolicy().hasHeightForWidth())
        self.EmotionLabel.setSizePolicy(sizePolicy)
        self.EmotionLabel.setMaximumSize(QtCore.QSize(16777215, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.EmotionLabel.setFont(font)
        self.EmotionLabel.setObjectName("EmotionLabel")
        self.graphic1 = GraphicsLayoutWidget(self.centralwidget)
        self.graphic1.setGeometry(QtCore.QRect(680, 50, 611, 280))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.graphic1.sizePolicy().hasHeightForWidth())
        self.graphic1.setSizePolicy(sizePolicy)
        self.graphic1.setMinimumSize(QtCore.QSize(153, 70))
        self.graphic1.setObjectName("graphic1")
        self.graphic2 = GraphicsLayoutWidget(self.centralwidget)
        self.graphic2.setGeometry(QtCore.QRect(680, 390, 611, 280))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.graphic2.sizePolicy().hasHeightForWidth())
        self.graphic2.setSizePolicy(sizePolicy)
        self.graphic2.setMinimumSize(QtCore.QSize(153, 70))
        self.graphic2.setObjectName("graphic2")
        self.graphLabel1 = QtWidgets.QLabel(self.centralwidget)
        self.graphLabel1.setEnabled(True)
        self.graphLabel1.setGeometry(QtCore.QRect(680, 20, 400, 21))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.graphLabel1.sizePolicy().hasHeightForWidth())
        self.graphLabel1.setSizePolicy(sizePolicy)
        self.graphLabel1.setMaximumSize(QtCore.QSize(16777215, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.graphLabel1.setFont(font)
        self.graphLabel1.setObjectName("graphLabel1")
        self.graphLabel2 = QtWidgets.QLabel(self.centralwidget)
        self.graphLabel2.setEnabled(True)
        self.graphLabel2.setGeometry(QtCore.QRect(680, 350, 400, 21))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.graphLabel2.sizePolicy().hasHeightForWidth())
        self.graphLabel2.setSizePolicy(sizePolicy)
        self.graphLabel2.setMaximumSize(QtCore.QSize(16777215, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.graphLabel2.setFont(font)
        self.graphLabel2.setObjectName("graphLabel2")
        self.videoWidget = QVideoWidget(self.centralwidget)
        self.videoWidget.setGeometry(QtCore.QRect(10, 50, 611, 280))
        self.videoWidget.setMinimumSize(QtCore.QSize(153, 70))
        self.videoWidget.setObjectName("videoWidget")
        self.faceWidget = QtWidgets.QLabel(self.centralwidget)
        self.faceWidget.setGeometry(QtCore.QRect(10, 340, 611, 280))
        self.faceWidget.setMinimumSize(QtCore.QSize(153, 70))
        self.faceWidget.setText("")
        self.faceWidget.setObjectName("faceWidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1318, 21))
        self.menubar.setObjectName("menubar")
        self.openPrevSession = QtWidgets.QMenu(self.menubar)
        self.openPrevSession.setObjectName("openPrevSession")
        self.settings = QtWidgets.QMenu(self.menubar)
        self.settings.setObjectName("settings")
        MainWindow.setMenuBar(self.menubar)
        self.action = QtWidgets.QAction(MainWindow)
        self.action.setObjectName("action")
        self.choosePort = QtWidgets.QAction(MainWindow)
        self.choosePort.setObjectName("choosePort")
        self.setEmotions = QtWidgets.QAction(MainWindow)
        self.setEmotions.setObjectName("setEmotions")
        self.chooseVideo = QtWidgets.QAction(MainWindow)
        self.chooseVideo.setObjectName("chooseVideo")
        self.setEmotionsData = QtWidgets.QAction(MainWindow)
        self.setEmotionsData.setObjectName("setEmotionsData")
        self.settings.addAction(self.setEmotionsData)
        self.settings.addAction(self.setEmotions)
        self.settings.addAction(self.chooseVideo)
        self.settings.addAction(self.choosePort)
        self.menubar.addAction(self.settings.menuAction())
        self.menubar.addAction(self.openPrevSession.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.startButton.setText(_translate("MainWindow", "Запуск"))
        self.EmotionLabel.setText(_translate("MainWindow", "Эмоция:"))
        self.graphLabel1.setText(_translate("MainWindow", "Окраска эмоции"))
        self.graphLabel2.setText(_translate("MainWindow", "Сила эмоции"))
        self.openPrevSession.setTitle(
            _translate("MainWindow", "Загрузить предыдущую сессию работы"))
        self.settings.setTitle(_translate("MainWindow", "Настройки"))
        self.action.setText(
            _translate("MainWindow", "Загрузить предыдущую сессию"))
        self.choosePort.setText(_translate("MainWindow", "Выбрать порт"))
        self.setEmotions.setText(
            _translate("MainWindow", "Настроить определяемые эмоции"))
        self.chooseVideo.setText(_translate("MainWindow", "Выбрать видеофайл"))
        self.setEmotionsData.setText(
            _translate("MainWindow", "Загрузить определяемые эмоции"))
class Ui_playAnomalyVideo(object):
    def setupUi(self, playAnomalyVideo):
        playAnomalyVideo.setObjectName("playAnomalyVideo")
        playAnomalyVideo.resize(594, 543)
        playAnomalyVideo.setStyleSheet("*{\n"
                                       "font-family: century gothic;\n"
                                       "background: #2A2F3C ;\n"
                                       "}\n"
                                       "QLineEdit, QTextEdit{\n"
                                       "background-color:#1C1D25;\n"
                                       "border:#1C1D25;\n"
                                       "color:white;\n"
                                       "font-size:18px;\n"
                                       "}\n"
                                       "QLabel{\n"
                                       "color: white;\n"
                                       "font-size: 20px;\n"
                                       "\n"
                                       "}\n"
                                       "QPushButton, QToolButton{\n"
                                       "font-weight:bold;\n"
                                       "color:white ;\n"
                                       "background:#1C1D25;\n"
                                       "}\n"
                                       "QPushButton:hover{\n"
                                       "color:white;\n"
                                       "background-color:black;\n"
                                       "}\n"
                                       "")
        self.centralwidget = QtWidgets.QWidget(playAnomalyVideo)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout_13 = QtWidgets.QVBoxLayout()
        self.verticalLayout_13.setObjectName("verticalLayout_13")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.videoPathfield = QtWidgets.QLineEdit(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(31)
        sizePolicy.setHeightForWidth(
            self.videoPathfield.sizePolicy().hasHeightForWidth())
        self.videoPathfield.setSizePolicy(sizePolicy)
        self.videoPathfield.setMinimumSize(QtCore.QSize(320, 31))
        self.videoPathfield.setStyleSheet("QLineEdit{\n"
                                          "background-color:#1C1D25;\n"
                                          "border:#1C1D25;\n"
                                          "color:white;\n"
                                          "font-size:18px;\n"
                                          "}")
        self.videoPathfield.setObjectName("videoPathfield")
        self.horizontalLayout_6.addWidget(self.videoPathfield)
        self.videoPathEnter_pushButton = QtWidgets.QPushButton(
            self.centralwidget)
        self.videoPathEnter_pushButton.setObjectName(
            "videoPathEnter_pushButton")
        self.horizontalLayout_6.addWidget(self.videoPathEnter_pushButton)
        self.verticalLayout_13.addLayout(self.horizontalLayout_6)
        spacerItem = QtWidgets.QSpacerItem(10, 10,
                                           QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout_13.addItem(spacerItem)
        self.anomalyVideoDisplay = QVideoWidget(self.centralwidget)
        self.anomalyVideoDisplay.setMinimumSize(QtCore.QSize(350, 400))
        self.anomalyVideoDisplay.setMaximumSize(
            QtCore.QSize(16777215, 16777215))
        self.anomalyVideoDisplay.setStyleSheet(
            "\n"
            "background-color: rgb(0, 0, 0);\n"
            "")
        self.anomalyVideoDisplay.setObjectName("anomalyVideoDisplay")
        self.verticalLayout_13.addWidget(self.anomalyVideoDisplay)
        spacerItem1 = QtWidgets.QSpacerItem(20, 10,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout_13.addItem(spacerItem1)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.play_pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.play_pushButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/menubar/play-24.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.play_pushButton.setIcon(icon)
        self.play_pushButton.setObjectName("play_pushButton")
        self.horizontalLayout_4.addWidget(self.play_pushButton)
        self.pause_pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pause_pushButton.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/logo/media-pause-24.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pause_pushButton.setIcon(icon1)
        self.pause_pushButton.setObjectName("pause_pushButton")
        self.horizontalLayout_4.addWidget(self.pause_pushButton)
        self.videoSlider = QtWidgets.QSlider(self.centralwidget)
        self.videoSlider.setOrientation(QtCore.Qt.Horizontal)
        self.videoSlider.setObjectName("videoSlider")
        self.horizontalLayout_4.addWidget(self.videoSlider)
        self.videoDurationChanged = QtWidgets.QLabel(self.centralwidget)
        self.videoDurationChanged.setObjectName("videoDurationChanged")
        self.horizontalLayout_4.addWidget(self.videoDurationChanged)
        self.verticalLayout_13.addLayout(self.horizontalLayout_4)
        spacerItem2 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout_13.addItem(spacerItem2)
        self.horizontalLayout.addLayout(self.verticalLayout_13)
        playAnomalyVideo.setCentralWidget(self.centralwidget)

        self.retranslateUi(playAnomalyVideo)
        QtCore.QMetaObject.connectSlotsByName(playAnomalyVideo)

    def retranslateUi(self, playAnomalyVideo):
        _translate = QtCore.QCoreApplication.translate
        playAnomalyVideo.setWindowTitle(
            _translate("playAnomalyVideo", "MainWindow"))
        self.videoPathfield.setText(
            _translate("playAnomalyVideo", "Enter video path here"))
        self.videoPathEnter_pushButton.setText(
            _translate("playAnomalyVideo", "Enter"))
        self.videoDurationChanged.setText(
            _translate("playAnomalyVideo", "Duration"))
class Ui_MainWindow(QWidget):

    ##    def __init__(self):
    ##        self.setAcceptDrops(True)

    #create media player object
    mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
    repeatMedia = False
    repeatItem = ""

    def formatTime(self, ms):

        h, r = divmod(ms, 3600000)
        m, r = divmod(r, 60000)
        s, _ = divmod(r, 1000)
        return ("%02d:%02d:%02d" % (h, m, s)) if h else ("%02d:%02d" % (m, s))

    def browseFile(self):
        if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
            self.mediaPlayer.play()
        elif self.mediaPlayer.state() == QMediaPlayer.PausedState:
            self.mediaPlayer.play()
        else:
            media, _ = QFileDialog.getOpenFileName(self, "Open Video")

            if media != "":
                self.mediaPlayer.setMedia(
                    QMediaContent(QUrl.fromLocalFile(media)))
                self.mediaPlayer.play()

    def openFile(self):
        media, _ = QFileDialog.getOpenFileName(self, "Open Video")

        if media != "":
            self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(media)))
            self.mediaPlayer.play()

    def pauseVideo(self):
        self.mediaPlayer.pause()

    def stopVideo(self):
        self.mediaPlayer.stop()

    def vidPosition(self, position):
        self.mediaPlayer.setPosition(position)

    def locationChanged(self, position):
        self.duration.setValue(position)

        if position >= 0:
            self.startTime.setText(self.formatTime(position))

        if self.mediaPlayer.state() == 0:

            if self.repeatMedia:
                self.mediaPlayer.play()
            else:
                ##                self.duration.setRange(0,0)
                self.startTime.setText("--:--")
                self.endTime.setText("--:--")

    def durationChanged(self, duration):
        self.duration.setRange(0, duration)

        playTime = self.mediaPlayer.duration()
        self.endTime.setText(self.formatTime(playTime))

    def volumeControl(self, percentage):
        self.mediaPlayer.setVolume(percentage)

    def loopMedia(self):
        self.repeatMedia = True


##    def dragEnterEvent(self, e):
##        if e.mimeData().hasUrls():
##            e.acceptProposedAction()
##
##    def dropEvent(self, e):
##        for url in e.mimeData().urls():
##            media = url
##
##        print(media)
##        self.model.layoutChanged.emit()
##
##        # If not playing, seeking to first of newly added + play.
##        if self.player.state() != QMediaPlayer.PlayingState:
##            i = self.playlist.mediaCount() - len(e.mimeData().urls())
##            self.playlist.setCurrentIndex(i)
##            self.player.play()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(700, 500)
        MainWindow.setMinimumSize(QtCore.QSize(700, 500))
        MainWindow.setMaximumSize(QtCore.QSize(700, 500))
        MainWindow.setStyleSheet("QWidget{\n"
                                 "    background-color: rgba(3,146,251,0.8);\n"
                                 "}\n"
                                 "\n"
                                 "QMenuBar {\n"
                                 "    background-color: #fff;\n"
                                 "}\n"
                                 "\n"
                                 "QLabel {\n"
                                 "    color: #E5F1FB;\n"
                                 "}\n"
                                 "\n"
                                 "#translation {\n"
                                 "    font-size: 40px;\n"
                                 "    color: #E5F1FB;\n"
                                 "}\n"
                                 "\n"
                                 "QLineEdit{\n"
                                 "    background: transparent;\n"
                                 "    border: none;\n"
                                 "    color: #E5F1FB;\n"
                                 "    border-bottom: 1px solid #717072;\n"
                                 "    font-size: 40px;\n"
                                 "}\n"
                                 "\n"
                                 "QPushButton{\n"
                                 "    color: #333;\n"
                                 "    background: #fff;\n"
                                 "    border-radius: 8px;\n"
                                 "    font-size: 17px;\n"
                                 "    padding: 5px;\n"
                                 "}\n"
                                 "\n"
                                 "QPushButton:hover,\n"
                                 "QPushButton:focus{\n"
                                 "    background: rgba(255, 255, 255, 0.8);\n"
                                 "    color: #000;\n"
                                 "}")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setEnabled(True)
        self.centralwidget.setObjectName("centralwidget")
        self.videoWidget = QVideoWidget(self.centralwidget)
        self.videoWidget.setGeometry(QtCore.QRect(0, 0, 700, 391))
        self.videoWidget.setMinimumSize(QtCore.QSize(700, 200))
        self.videoWidget.setObjectName("videoWidget")

        ################### Video Widget ################
        self.mediaPlayer.setVideoOutput(self.videoWidget)
        #################################################

        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 390, 691, 91))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.startTime = QtWidgets.QLabel(self.verticalLayoutWidget)
        self.startTime.setObjectName("startTime")
        self.horizontalLayout.addWidget(self.startTime)
        self.duration = QtWidgets.QSlider(self.verticalLayoutWidget)
        self.duration.setOrientation(QtCore.Qt.Horizontal)
        self.duration.setObjectName("duration")
        self.horizontalLayout.addWidget(self.duration)

        ################### Video Slider #################
        self.duration.setRange(0, 0)
        self.duration.sliderMoved.connect(self.vidPosition)
        self.mediaPlayer.positionChanged.connect(self.locationChanged)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
        ##################################################

        self.endTime = QtWidgets.QLabel(self.verticalLayoutWidget)
        self.endTime.setObjectName("endTime")
        self.horizontalLayout.addWidget(self.endTime)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.play = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.play.setObjectName("play")
        self.horizontalLayout_3.addWidget(self.play)

        ################### Play Button ##################
        self.play.clicked.connect(self.browseFile)
        ##################################################

        self.pause = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.pause.setObjectName("pause")
        self.horizontalLayout_3.addWidget(self.pause)

        ################### Pause Button #################
        self.pause.clicked.connect(self.pauseVideo)
        ##################################################

        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.prev = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.prev.setObjectName("prev")
        self.horizontalLayout_3.addWidget(self.prev)
        self.stop = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.stop.setObjectName("stop")
        self.horizontalLayout_3.addWidget(self.stop)

        ################### Stop Button ##################
        self.stop.clicked.connect(self.stopVideo)
        ##################################################

        self.next = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.next.setObjectName("next")
        self.horizontalLayout_3.addWidget(self.next)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.repeat = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.repeat.setEnabled(True)
        self.repeat.setStatusTip("")
        self.repeat.setObjectName("repeat")
        self.horizontalLayout_3.addWidget(self.repeat)

        ################### Repeat Button ################
        self.repeat.clicked.connect(self.loopMedia)
        ##################################################

        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.volume = QtWidgets.QSlider(self.verticalLayoutWidget)
        self.volume.setOrientation(QtCore.Qt.Vertical)
        self.volume.setObjectName("volume")
        self.horizontalLayout_3.addWidget(self.volume)

        ################### Volume Slider ################
        self.volume.setRange(0, 100)
        self.volume.setValue(100)
        self.volume.valueChanged.connect(self.volumeControl)
        ##################################################

        self.verticalLayout.addLayout(self.horizontalLayout_3)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 700, 21))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        MainWindow.setMenuBar(self.menubar)
        self.actionPlaylist = QtWidgets.QAction(MainWindow)
        self.actionPlaylist.setObjectName("actionPlaylist")
        self.actionClose = QtWidgets.QAction(MainWindow)
        self.actionClose.setObjectName("actionClose")
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setObjectName("actionOpen")
        self.menuFile.addAction(self.actionOpen)
        self.menuFile.addAction(self.actionPlaylist)
        self.menuFile.addSeparator()
        self.menuFile.addAction(self.actionClose)
        self.menubar.addAction(self.menuFile.menuAction())

        ################### Open Button ##################
        self.actionOpen.triggered.connect(self.openFile)
        ##################################################

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.startTime.setText(_translate("MainWindow", "--:--"))
        self.endTime.setText(_translate("MainWindow", "--:--"))
        self.play.setText(_translate("MainWindow", "play"))
        self.pause.setText(_translate("MainWindow", "pause"))
        self.prev.setText(_translate("MainWindow", "Previous"))
        self.stop.setText(_translate("MainWindow", "stop"))
        self.next.setText(_translate("MainWindow", "Next"))
        self.repeat.setText(_translate("MainWindow", "Repeat"))
        self.menuFile.setTitle(_translate("MainWindow", "File"))
        self.actionPlaylist.setText(_translate("MainWindow", "Playlist"))
        self.actionClose.setText(_translate("MainWindow", "Quit"))
        self.actionOpen.setText(_translate("MainWindow", "Open File..."))
예제 #13
0
class Window(QWidget):

    _Constant_recognition = 0.8

    
    # конструктор формы
    def __init__(self):
        super().__init__()
        self._Client = Biometric_Client(url='https://expasoft.com', port=2133,
                                        subscription_key='9fc9474b4bd16b492276eee41763a3cb')
        self.imgName = os.getcwd() + "\img\currentPhoto.jpg"
        self.imgName0 = os.getcwd() + "\img\currentPhoto0.jpg"
        self.imgName1 = os.getcwd() + "\img\dbPhoto0.jpg"
        self.setObjectName("FormMain")
        self.setWindowTitle("БиоСКУД Watchman")
        self.resize(1024, 600)

        self.groupBoxCamera = QtWidgets.QGroupBox(self)
        self.groupBoxCamera.setObjectName("groupBoxCamera")
        self.groupBoxCamera.setTitle("")
        self.groupBoxCamera.setGeometry(QtCore.QRect(10, 10, 500, 371))
        
        self.labelCameraTitle = QtWidgets.QLabel(self.groupBoxCamera)
        self.labelCameraTitle.setObjectName("labelCameraTitle")
        self.labelCameraTitle.setText("Изображение с камеры")
        self.labelCameraTitle.setGeometry(QtCore.QRect(160, 10, 181, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.labelCameraTitle.setFont(font)
        
        self.CameraStream = QVideoWidget(self)
        self.CameraStream.setObjectName("videoCameraStream")
        self.CameraStream.setGeometry(QtCore.QRect(10, 50, 481, 261))
        self.CameraStream.setMinimumSize(QtCore.QSize(241, 0))
       
        self.pushButtonRecognition = QtWidgets.QPushButton(self.groupBoxCamera)
        self.pushButtonRecognition.setObjectName("pushButtonRecognition")
        self.pushButtonRecognition.setText("Распознать")
        self.pushButtonRecognition.setGeometry(QtCore.QRect(10, 310, 481, 51))
        self.pushButtonRecognition.clicked.connect(self.identifyPersonBegin)
        
        self.pushButtonLog = QtWidgets.QPushButton(self)
        self.pushButtonLog.setObjectName("pushButtonLog")
        self.pushButtonLog.setText("Журнал")
        self.pushButtonLog.setGeometry(QtCore.QRect(10, 460, 121, 61))
        self.pushButtonLog.clicked.connect(self.OpenLogFile)
        
        self.pushButtonDb = QtWidgets.QPushButton(self)
        self.pushButtonDb.setObjectName("pushButtonDb")
        self.pushButtonDb.setText("База данных")
        self.pushButtonDb.setGeometry(QtCore.QRect(10, 390, 121, 61))
        self.pushButtonDb.clicked.connect(self.OpenArchivist)
        
        self.groupBoxRecognition = QtWidgets.QGroupBox(self)
        self.groupBoxRecognition.setObjectName("groupBoxRecognition")
        self.groupBoxRecognition.setTitle("")
        self.groupBoxRecognition.setGeometry(QtCore.QRect(520, 10, 500, 581))

        self.pushButtonExit = QtWidgets.QPushButton(self)
        self.pushButtonExit.setObjectName("pushButtonExit")
        self.pushButtonExit.setText("Выйти")
        self.pushButtonExit.setGeometry(QtCore.QRect(10, 530, 121, 61))
        self.pushButtonExit.clicked.connect(self.ExitProgream)

        self.labelPersonName = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelPersonName.setObjectName("labelPersonName")
        self.labelPersonName.setText("")
        self.labelPersonName.setGeometry(QtCore.QRect(20, 320, 271, 31))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.labelPersonName.setFont(font)
        
        self.labelCurrentPhoto = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelCurrentPhoto.setObjectName("labelCurrentPhoto")
        self.labelCurrentPhoto.setText("")
        self.labelCurrentPhoto.setGeometry(QtCore.QRect(10, 40, 241, 261))
        self.labelCurrentPhoto.setMinimumSize(QtCore.QSize(241, 0))
        self.labelCurrentPhoto.setAlignment(QtCore.Qt.AlignCenter)
        
        self.labelPersonJob = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelPersonJob.setObjectName("labelPersonJob")
        self.labelPersonJob.setText("")
        self.labelPersonJob.setGeometry(QtCore.QRect(20, 360, 171, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.labelPersonJob.setFont(font)

        self.labelPersonInf = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelPersonInf.setObjectName("labelPersonJob")
        self.labelPersonInf.setText("")
        self.labelPersonInf.setGeometry(QtCore.QRect(20, 400, 171, 21))
        font = QtGui.QFont()
        font.setPointSize(8)
        self.labelPersonInf.setFont(font)
        
        self.labelAccess = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelAccess.setObjectName("labelAccess")
        self.labelAccess.setText("<html><head/><body><p align=\"center\">Допущен</p></body></html>")
        self.labelAccess.setGeometry(QtCore.QRect(10, 490, 481, 81))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(76, 197, 32))
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        self.labelAccess.setPalette(palette)
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.labelAccess.setFont(font)
        self.labelAccess.setAcceptDrops(False)
        self.labelAccess.setAutoFillBackground(True)
        self.labelAccess.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.labelAccess.setFrameShadow(QtWidgets.QFrame.Plain)
        self.labelAccess.setTextFormat(QtCore.Qt.AutoText)
        self.labelAccess.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)

        self.labelDbPhoto = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelDbPhoto.setObjectName("labelDbPhoto")
        self.labelDbPhoto.setText("")
        self.labelDbPhoto.setGeometry(QtCore.QRect(250, 40, 241, 261))
        self.labelDbPhoto.setMinimumSize(QtCore.QSize(241, 0))
        self.labelDbPhoto.setAlignment(QtCore.Qt.AlignCenter)
        
        self.labelCurrentPhotoTitle = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelCurrentPhotoTitle.setObjectName("labelCurrentPhotoTitle")
        self.labelCurrentPhotoTitle.setText("Текущее фото")
        self.labelCurrentPhotoTitle.setGeometry(QtCore.QRect(80, 10, 111, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.labelCurrentPhotoTitle.setFont(font)

        self.labelDbPhotoTitle = QtWidgets.QLabel(self.groupBoxRecognition)
        self.labelDbPhotoTitle.setObjectName("labelDbPhotoTitle")
        self.labelDbPhotoTitle.setText("Фото в базе")
        self.labelDbPhotoTitle.setGeometry(QtCore.QRect(320, 10, 111, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.labelDbPhotoTitle.setFont(font)

        self.device = QCamera.availableDevices()[0]
        self.camera = QCamera(self.device)
        self.camera.setViewfinder(self.CameraStream)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.imageCapture=QCameraImageCapture(self.camera)
        self.imageCapture.imageSaved.connect(self.identifyPersonEnd)
        self.camera.start()

    # идентификация человека (фото)
    def identifyPersonBegin(self):
        if self.imageCapture.isReadyForCapture():
            #imgName = os.getcwd() + "\img\currentPhoto.jpg"
            self.camera.searchAndLock()
            self.imageCapture.capture(self.imgName)
            self.camera.unlock()

    # идентификация человека (алгоритм)
    def identifyPersonEnd(self):

        self._Client.get_aligned_faces(self.imgName, "img\currentPhoto")
        
        id_person = self._Client.identify_profile_by_face(self.imgName0, 1, 0).pop("result")[0]
        self._Client.get_profile_image(id_person['profile_id'], id_person['image_id'],self.imgName1)
        self.labelCurrentPhoto.setPixmap(QtGui.QPixmap(self.imgName0))
        self.labelDbPhoto.setPixmap(QtGui.QPixmap(self.imgName1))

        profile = JsonDataBase.GetInfo(id_person['profile_id'])
        if profile != None:
            self.labelPersonName.setText(profile['name'])
            self.labelPersonJob.setText(profile['tag'])
        else:
            self.labelPersonName.setText(profile[''])
            self.labelPersonJob.setText(profile[''])

        if id_person['score'] > self._Constant_recognition :
            palette = QtGui.QPalette()
            brush = QtGui.QBrush(QtGui.QColor(255, 22, 46))
            palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
            self.labelAccess.setPalette(palette)
            self.labelAccess.setText("<html><head/><body><p align=\"center\">Недопущен</p></body></html>")
        else:
            palette = QtGui.QPalette()
            brush = QtGui.QBrush(QtGui.QColor(76, 197, 32))
            palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
            self.labelAccess.setPalette(palette)
            self.labelAccess.setText("<html><head/><body><p align=\"center\">Допущен</p></body></html>")
        self.labelPersonInf.setText('id= ' + str(id_person['profile_id'])+' score= '+str(id_person['score']))

    # открыть управление базой данных
    def OpenArchivist(self):
        self.archivist = Archivist.Window()
        self.archivist.show()

    # открыть файл логов
    def OpenLogFile(self):
        os.system("log.txt")

    # выйти из программы
    def ExitProgream(self):
        self.camera.stop()
        self.close()
예제 #14
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(706, 493)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/plugins/VideoGis/icon.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Form.setWindowIcon(icon)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_3 = QtWidgets.QPushButton(Form)
        font = QtGui.QFont()
        font.setKerning(True)
        self.pushButton_3.setFont(font)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/VgisIcon/Hand-icon.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.pushButton_3.setIcon(icon1)
        self.pushButton_3.setAutoExclusive(False)
        self.pushButton_3.setAutoDefault(False)
        self.pushButton_3.setDefault(False)
        self.pushButton_3.setFlat(False)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.toolButton_6 = QtWidgets.QToolButton(Form)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(
            QtGui.QPixmap(":/plugins/VideoGis/iconNewTabEditorConsole.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_6.setIcon(icon2)
        self.toolButton_6.setObjectName("toolButton_6")
        self.horizontalLayout.addWidget(self.toolButton_6)
        self.toolButton_7 = QtWidgets.QToolButton(Form)
        self.toolButton_7.setEnabled(False)
        self.toolButton_7.setCheckable(True)
        self.toolButton_7.setObjectName("toolButton_7")
        self.horizontalLayout.addWidget(self.toolButton_7)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setEnabled(False)
        self.pushButton.setCheckable(True)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setEnabled(False)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout.addWidget(self.label_2)
        self.spinBox = QtWidgets.QSpinBox(Form)
        self.spinBox.setEnabled(False)
        self.spinBox.setMinimum(1)
        self.spinBox.setSingleStep(10)
        self.spinBox.setProperty("value", 25)
        self.spinBox.setObjectName("spinBox")
        self.horizontalLayout.addWidget(self.spinBox)
        spacerItem = QtWidgets.QSpacerItem(23, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.toolButton_4 = QtWidgets.QToolButton(Form)
        self.toolButton_4.setObjectName("toolButton_4")
        self.horizontalLayout.addWidget(self.toolButton_4)
        self.toolButton_5 = QtWidgets.QToolButton(Form)
        self.toolButton_5.setObjectName("toolButton_5")
        self.horizontalLayout.addWidget(self.toolButton_5)
        self.verticalLayout_3.addLayout(self.horizontalLayout)
        self.dockWidget_2 = QtWidgets.QDockWidget(Form)
        self.dockWidget_2.setFeatures(
            QtWidgets.QDockWidget.NoDockWidgetFeatures)
        self.dockWidget_2.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea
                                          | QtCore.Qt.RightDockWidgetArea)
        self.dockWidget_2.setObjectName("dockWidget_2")
        self.dockWidgetContents_7 = QtWidgets.QWidget()
        self.dockWidgetContents_7.setObjectName("dockWidgetContents_7")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.dockWidgetContents_7)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.video_frame = QVideoWidget(Form)
        p = self.video_frame.palette()
        p.setColor(QtGui.QPalette.Window, QtCore.Qt.black)
        self.video_frame.setPalette(p)
        self.video_frame.setAttribute(QtCore.Qt.WA_OpaquePaintEvent)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.video_frame.sizePolicy().hasHeightForWidth())
        self.video_frame.setSizePolicy(sizePolicy)
        self.video_frame.setMinimumSize(QtCore.QSize(200, 200))
        self.video_frame.setStyleSheet("background-color: rgb(0, 0, 0);")
        self.video_frame.setObjectName("video_frame")
        self.verticalLayout.addWidget(self.video_frame)
        self.horizontalSlider = QtWidgets.QSlider(self.dockWidgetContents_7)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName("horizontalSlider")
        self.verticalLayout.addWidget(self.horizontalSlider)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem1 = QtWidgets.QSpacerItem(98, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.toolButton_11 = QtWidgets.QToolButton(self.dockWidgetContents_7)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowLeft.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.toolButton_11.setIcon(icon3)
        self.toolButton_11.setObjectName("toolButton_11")
        self.horizontalLayout_3.addWidget(self.toolButton_11)
        self.SkipBacktoolButton_8 = QtWidgets.QToolButton(
            self.dockWidgetContents_7)
        self.SkipBacktoolButton_8.setStyleSheet("")
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasPrev.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.SkipBacktoolButton_8.setIcon(icon4)
        self.SkipBacktoolButton_8.setObjectName("SkipBacktoolButton_8")
        self.horizontalLayout_3.addWidget(self.SkipBacktoolButton_8)
        self.playButton = QtWidgets.QToolButton(self.dockWidgetContents_7)
        self.playButton.setObjectName("playButton")
        self.horizontalLayout_3.addWidget(self.playButton)
        self.muteButton = QtWidgets.QToolButton(self.dockWidgetContents_7)
        self.muteButton.setText("")
        self.muteButton.setObjectName("muteButton")
        self.horizontalLayout_3.addWidget(self.muteButton)
        self.replayPosition_label = QtWidgets.QLabel(self.dockWidgetContents_7)
        self.replayPosition_label.setObjectName("replayPosition_label")
        self.horizontalLayout_3.addWidget(self.replayPosition_label)
        self.SkipFortoolButton_9 = QtWidgets.QToolButton(
            self.dockWidgetContents_7)
        self.SkipFortoolButton_9.setStyleSheet("")
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasNext.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.SkipFortoolButton_9.setIcon(icon5)
        self.SkipFortoolButton_9.setObjectName("SkipFortoolButton_9")
        self.horizontalLayout_3.addWidget(self.SkipFortoolButton_9)
        self.toolButton_12 = QtWidgets.QToolButton(self.dockWidgetContents_7)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowRight.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.toolButton_12.setIcon(icon6)
        self.toolButton_12.setObjectName("toolButton_12")
        self.horizontalLayout_3.addWidget(self.toolButton_12)
        spacerItem2 = QtWidgets.QSpacerItem(98, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.lcdNumber = QtWidgets.QLCDNumber(self.dockWidgetContents_7)
        self.lcdNumber.setObjectName("lcdNumber")
        self.horizontalLayout_3.addWidget(self.lcdNumber)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1)
        self.dockWidget_2.setWidget(self.dockWidgetContents_7)
        self.verticalLayout_3.addWidget(self.dockWidget_2)
        self.dockWidget_4 = QtWidgets.QDockWidget(Form)
        self.dockWidget_4.setMaximumSize(QtCore.QSize(524287, 121))
        self.dockWidget_4.setFeatures(
            QtWidgets.QDockWidget.NoDockWidgetFeatures)
        self.dockWidget_4.setAllowedAreas(QtCore.Qt.BottomDockWidgetArea)
        self.dockWidget_4.setObjectName("dockWidget_4")
        self.dockWidgetContents_6 = QtWidgets.QWidget()
        self.dockWidgetContents_6.setObjectName("dockWidgetContents_6")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(
            self.dockWidgetContents_6)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label = QtWidgets.QLabel(self.dockWidgetContents_6)
        self.label.setObjectName("label")
        self.verticalLayout_2.addWidget(self.label)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setSizeConstraint(
            QtWidgets.QLayout.SetFixedSize)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.pushButtonCutA_6 = QtWidgets.QPushButton(
            self.dockWidgetContents_6)
        self.pushButtonCutA_6.setEnabled(True)
        self.pushButtonCutA_6.setObjectName("pushButtonCutA_6")
        self.horizontalLayout_2.addWidget(self.pushButtonCutA_6)
        self.pushButtonCutB_6 = QtWidgets.QPushButton(
            self.dockWidgetContents_6)
        self.pushButtonCutB_6.setObjectName("pushButtonCutB_6")
        self.horizontalLayout_2.addWidget(self.pushButtonCutB_6)
        self.label_7 = QtWidgets.QLabel(self.dockWidgetContents_6)
        self.label_7.setObjectName("label_7")
        self.horizontalLayout_2.addWidget(self.label_7)
        self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(
            self.dockWidgetContents_6)
        self.doubleSpinBox_2.setObjectName("doubleSpinBox_2")
        self.horizontalLayout_2.addWidget(self.doubleSpinBox_2)
        self.comboBox_6 = QtWidgets.QComboBox(self.dockWidgetContents_6)
        self.comboBox_6.setObjectName("comboBox_6")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_6)
        self.pushButton_5 = QtWidgets.QPushButton(self.dockWidgetContents_6)
        self.pushButton_5.setObjectName("pushButton_5")
        self.horizontalLayout_2.addWidget(self.pushButton_5)
        self.pushButtonCut_2 = QtWidgets.QPushButton(self.dockWidgetContents_6)
        self.pushButtonCut_2.setObjectName("pushButtonCut_2")
        self.horizontalLayout_2.addWidget(self.pushButtonCut_2)
        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
        self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents_6)
        self.progressBar.setProperty("value", 24)
        self.progressBar.setObjectName("progressBar")
        self.verticalLayout_2.addWidget(self.progressBar)
        self.dockWidget_4.setWidget(self.dockWidgetContents_6)
        self.verticalLayout_3.addWidget(self.dockWidget_4)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Video UAV Tracker - Player"))
        self.pushButton_3.setToolTip(
            _translate(
                "Form",
                "<html><head/><body><p>Move along Video directly clicking on gps track</p></body></html>"
            ))
        self.pushButton_3.setText(_translate("Form", "MapTool   "))
        self.label_2.setText(_translate("Form", "Overlap %"))
        self.toolButton_6.setToolTip(
            _translate("Form",
                       "<html><head/><body><p>Add point</p></body></html>"))
        self.toolButton_6.setText(_translate("Form", "o"))
        self.toolButton_4.setToolTip(
            _translate(
                "Form",
                "<html><head/><body><p>Enable extract frames toolbox</p><p><br/></p></body></html>"
            ))
        self.toolButton_4.setText(_translate("Form", "Extract frames"))
        self.toolButton_5.setText(_translate("Form", "Close"))
        self.toolButton_11.setText(_translate("Form", "<<"))
        self.SkipBacktoolButton_8.setText(_translate("Form", "<"))
        self.playButton.setText(_translate("Form", "> / ||"))
        self.replayPosition_label.setText(_translate("Form", "-:- / -:-"))
        self.SkipFortoolButton_9.setText(_translate("Form", ">"))
        self.toolButton_12.setText(_translate("Form", ">>"))
        self.label.setText(_translate("Form", "Export Frames Tool"))
        self.pushButtonCutA_6.setToolTip(
            _translate(
                "Form",
                "<html><head/><body><p>Export from actual Video Frame</p></body></html>"
            ))
        self.pushButtonCutA_6.setText(_translate("Form", "From A"))
        self.pushButtonCutB_6.setToolTip(
            _translate(
                "Form",
                "<html><head/><body><p>Export to actual Video Frame</p></body></html>"
            ))
        self.pushButtonCutB_6.setText(_translate("Form", "To B"))
        self.label_7.setText(_translate("Form", "Pick one frame every"))
        self.comboBox_6.setItemText(0, _translate("Form", "meters"))
        self.comboBox_6.setItemText(1, _translate("Form", "seconds"))
        self.pushButton_5.setText(_translate("Form", "Cancel"))
        self.pushButtonCut_2.setText(_translate("Form", "Extract!"))
        self.toolButton_7.setText(_translate("Form", "3D"))
        self.pushButton.setText(_translate("Form", "Create Mosaic"))
예제 #15
0
class FFWindow(QtWidgets.QWidget):
    def __init__(self, movie_dir, pos_snapshot_dir, neg_snapshot_dir):
        super().__init__()

        self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface)

        self.movie_dir = movie_dir
        video_list = glob.glob(os.path.join(self.movie_dir, "*.mp4"))
        print("{} movies found".format(len(video_list)))
        # We want to be able to cycle through them
        self.video_files = itertools.cycle(iter(video_list))

        # Check the output directories exist
        self.pos_snapshot_dir = pos_snapshot_dir
        if not os.path.exists(self.pos_snapshot_dir):
            os.makedirs(self.pos_snapshot_dir)
        self.neg_snapshot_dir = neg_snapshot_dir
        if not os.path.exists(self.neg_snapshot_dir):
            os.makedirs(self.neg_snapshot_dir)

        self.setWindowTitle('FrameFinder')

        self.video_widget = QVideoWidget()
        # self.video_widget.setFixedSize(640, 360)
        # self.video_widget.
        self.video_widget.setMinimumSize(640, 360)
        self.video_widget.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                        QtWidgets.QSizePolicy.Expanding)
        self.media_player.setVideoOutput(self.video_widget)

        self.position_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        self.position_slider.setRange(0, 0)
        self.position_slider.sliderMoved.connect(self.set_position)

        self.errorLabel = QtWidgets.QLabel()
        # self.errorLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
        #     QtWidgets.QSizePolicy.Maximum)

        self.fileLabel = QtWidgets.QLabel()

        self.rewind_but = QtWidgets.QPushButton()
        self.rewind_but.setIcon(self.style().standardIcon(
            QtWidgets.QStyle.SP_ArrowLeft))
        self.rewind_but.setText("Normal [A]")
        self.rewind_but.clicked.connect(self.rewind)

        self.slow_rewind_but = QtWidgets.QPushButton()
        self.slow_rewind_but.setIcon(self.style().standardIcon(
            QtWidgets.QStyle.SP_ArrowLeft))
        self.slow_rewind_but.setText("Slow [S]")
        self.slow_rewind_but.clicked.connect(self.slow_rewind)

        self.play_but = QtWidgets.QPushButton()
        self.play_but.setIcon(self.style().standardIcon(
            QtWidgets.QStyle.SP_MediaPlay))
        self.play_but.setText("[D]")
        self.play_but.clicked.connect(self.playtoggle)

        self.slow_forward_but = QtWidgets.QPushButton()
        self.slow_forward_but.setIcon(self.style().standardIcon(
            QtWidgets.QStyle.SP_ArrowRight))
        self.slow_forward_but.setText("Slow [F]")
        self.slow_forward_but.clicked.connect(self.slow_forward)

        self.forward_but = QtWidgets.QPushButton()
        self.forward_but.setIcon(self.style().standardIcon(
            QtWidgets.QStyle.SP_ArrowRight))
        self.forward_but.setText("Normal [G]")
        self.forward_but.clicked.connect(self.forward)

        self.fast_forward_but = QtWidgets.QPushButton()
        self.fast_forward_but.setIcon(self.style().standardIcon(
            QtWidgets.QStyle.SP_ArrowRight))
        self.fast_forward_but.setText("Fast [H]")
        self.fast_forward_but.clicked.connect(self.fast_forward)

        self.pos_snapshot_but = QtWidgets.QPushButton()
        self.pos_snapshot_but.setText("Snapshot Positive [P]")
        self.pos_snapshot_but.clicked.connect(self.pos_snapshot)

        self.neg_snapshot_but = QtWidgets.QPushButton()
        self.neg_snapshot_but.setText("Snapshot Negative [O]")
        self.neg_snapshot_but.clicked.connect(self.neg_snapshot)

        self.next_but = QtWidgets.QPushButton()
        self.next_but.setText("Next movie [N]")
        self.next_but.clicked.connect(self.next_video)

        video_vbox = QtWidgets.QVBoxLayout()
        video_vbox.addWidget(self.video_widget)
        video_vbox.addWidget(self.position_slider)
        control_box = QtWidgets.QHBoxLayout()
        control_box.addWidget(self.rewind_but)
        control_box.addWidget(self.slow_rewind_but)
        control_box.addWidget(self.play_but)
        control_box.addWidget(self.slow_forward_but)
        control_box.addWidget(self.forward_but)
        control_box.addWidget(self.fast_forward_but)
        video_vbox.addLayout(control_box)

        video_vbox.addWidget(self.errorLabel)
        video_vbox.addWidget(self.fileLabel)

        file_box = QtWidgets.QHBoxLayout()
        file_box.addWidget(self.pos_snapshot_but)
        file_box.addWidget(self.neg_snapshot_but)
        file_box.addWidget(self.next_but)

        v_box = QtWidgets.QVBoxLayout()
        # v_box.addStretch()
        v_box.addLayout(video_vbox)

        v_box.addLayout(file_box)
        # v_box.addStretch()

        self.setLayout(v_box)

        self.media_player.stateChanged.connect(self.status_changed)
        # self.media_player.availabilityChanged.connect(self.status_changed)
        self.media_player.positionChanged.connect(self.position_changed)
        self.media_player.durationChanged.connect(self.duration_changed)
        self.media_player.error.connect(self.handleError)

        self.next_video()

        # Set up some keyboard shortcuts

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("a"), self)
        shortcut.activated.connect(self.rewind_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("s"), self)
        shortcut.activated.connect(self.slow_rewind_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("d"), self)
        shortcut.activated.connect(self.play_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(" "), self)
        shortcut.activated.connect(self.play_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("f"), self)
        shortcut.activated.connect(self.slow_forward_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("g"), self)
        shortcut.activated.connect(self.forward_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("h"), self)
        shortcut.activated.connect(self.fast_forward_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("p"), self)
        shortcut.activated.connect(self.pos_snapshot_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("o"), self)
        shortcut.activated.connect(self.neg_snapshot_but.animateClick)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("n"), self)
        shortcut.activated.connect(self.next_but.animateClick)

    def playtoggle(self):
        if self.media_player.state() == QMediaPlayer.PlayingState:
            self.pause()
        else:
            self.play()

    def pause(self):
        self.media_player.pause()

    def play(self):
        self.media_player.play()
        # This is a nasty hack.  The video tends to zoom to 1:1
        # when you play, but rescales itself when you resize the window.
        # Faking a window resize is the only way I could find to fix the zoom.
        size = self.size()
        self.resize(size.width() + 1, size.height() + 1)
        self.resize(size.width(), size.height())

    def rewind(self):
        self.media_player.setPlaybackRate(-1)
        self.errorLabel.setText("Rewind 1x")
        self.play()

    def slow_rewind(self):
        self.media_player.setPlaybackRate(-0.25)
        self.errorLabel.setText("Rewind 0.25x")
        self.play()

    def slow_forward(self):
        self.media_player.setPlaybackRate(0.25)
        self.errorLabel.setText("Forward 0.25x")
        self.play()

    def forward(self):
        self.media_player.setPlaybackRate(1.0)
        self.errorLabel.setText("Forward 1x")
        self.play()

    def fast_forward(self):
        self.media_player.setPlaybackRate(2.0)
        self.errorLabel.setText("Forward 2x")
        self.play()

    def status_changed(self):
        if self.media_player.state() == QMediaPlayer.PlayingState:
            self.play_but.setIcon(self.style().standardIcon(
                QtWidgets.QStyle.SP_MediaPause))
        else:
            self.play_but.setIcon(self.style().standardIcon(
                QtWidgets.QStyle.SP_MediaPlay))
        self.play_but.repaint()
        # print ("Status", self.media_player.mediaStatus())

    def position_changed(self, position):
        # print("Position changed to", position)
        self.position_slider.setValue(position)

    def duration_changed(self, duration):
        print("Duration changed to", duration)
        self.position_slider.setRange(0, duration)

    def set_position(self, position):
        self.media_player.setPosition(position)

    def pos_snapshot(self):
        self.snapshot(self.pos_snapshot_dir)

    def neg_snapshot(self):
        self.snapshot(self.neg_snapshot_dir)

    def snapshot(self, snap_dir):
        video_path = self.media.canonicalUrl().path()
        position = self.media_player.position()
        video_file, extension = os.path.splitext(os.path.basename(video_path))
        snapshot_file = os.path.join(snap_dir,
                                     "{}_{}.jpg".format(video_file, position))
        # Use ffmpeg because it's not clear how to get
        # the frame back from the video surface
        cmd = [
            "ffmpeg", "-ss",
            str(position / 1000), "-i", video_path, "-frames", "1",
            snapshot_file
        ]
        print(" ".join(cmd))
        retcode = subprocess.call(cmd)
        if retcode == 0:
            self.errorLabel.setText("Saved {}".format(snapshot_file))
        else:
            self.errorLabel.setText("Error running ffmpeg")

    def next_video(self):
        # Display the next file if there is one
        try:
            self.errorLabel.clear()
            next_video = os.path.join(os.getcwd(), next(self.video_files))
            print(next_video)

            self.pause()
            self.media = QMediaContent(QtCore.QUrl.fromLocalFile(next_video))
            self.media_player.setMedia(self.media)
            self.fileLabel.setText(next_video)
            self.play()

        except StopIteration:
            pass

    def handleError(self):
        self.errorLabel.setText("Error: " + self.media_player.errorString())