2021-5-14第一篇

手语界面设置(pyqt+人脸识别+roi)

一级目录

标题 first.py

first.ui
main.py
roi.py
test.py
下面展示一些 内联代码片

first.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'first.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1240, 753)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        MainWindow.setFont(font)
        MainWindow.setStyleSheet("#MainWindow{border-image:url(./3.jpg)}")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
        self.groupBox.setSizePolicy(sizePolicy)
        self.groupBox.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.groupBox.setStyleSheet("QGroupBox{\n"
"    font-size: 20px;\n"
"    font-weight: bold;\n"
"}\n"
"groupBox{\n"
"    background-color: rgb(170, 255, 255);\n"
"}")
        self.groupBox.setObjectName("groupBox")
        self.gridLayout = QtWidgets.QGridLayout(self.groupBox)
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        spacerItem = QtWidgets.QSpacerItem(57, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.inputedit = QtWidgets.QLineEdit(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.inputedit.sizePolicy().hasHeightForWidth())
        self.inputedit.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(14)
        self.inputedit.setFont(font)
        self.inputedit.setObjectName("inputedit")
        self.horizontalLayout.addWidget(self.inputedit)
        self.verticalLayout_2.addLayout(self.horizontalLayout)
        spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout_2.addItem(spacerItem1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.groupBox)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.outputedit = QtWidgets.QLineEdit(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.outputedit.sizePolicy().hasHeightForWidth())
        self.outputedit.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(14)
        self.outputedit.setFont(font)
        self.outputedit.setObjectName("outputedit")
        self.horizontalLayout_2.addWidget(self.outputedit)
        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
        self.gridLayout.addLayout(self.verticalLayout_2, 0, 0, 1, 1)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.label_4 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
        self.label_4.setSizePolicy(sizePolicy)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout_3.addWidget(self.label_4)
        self.corebox = QtWidgets.QSpinBox(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.corebox.sizePolicy().hasHeightForWidth())
        self.corebox.setSizePolicy(sizePolicy)
        self.corebox.setMinimumSize(QtCore.QSize(91, 31))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(14)
        self.corebox.setFont(font)
        self.corebox.setAlignment(QtCore.Qt.AlignCenter)
        self.corebox.setProperty("value", 1)
        self.corebox.setObjectName("corebox")
        self.horizontalLayout_3.addWidget(self.corebox)
        self.gridLayout.addLayout(self.horizontalLayout_3, 0, 2, 1, 1)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_3 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy)
        self.label_3.setMinimumSize(QtCore.QSize(0, 30))
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.verticalLayout.addWidget(self.label_3)
        self.gridLayout.addLayout(self.verticalLayout, 1, 0, 1, 1)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.gridLayout.addLayout(self.verticalLayout_3, 1, 1, 1, 1)
        self.StartButton = QtWidgets.QPushButton(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.StartButton.sizePolicy().hasHeightForWidth())
        self.StartButton.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Aharoni")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.StartButton.setFont(font)
        self.StartButton.setStyleSheet("background-color: rgb(0, 255, 0);")
        self.StartButton.setIconSize(QtCore.QSize(16, 16))
        self.StartButton.setObjectName("StartButton")
        self.gridLayout.addWidget(self.StartButton, 1, 2, 1, 1)
        self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 2)
        self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(3)
        sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth())
        self.groupBox_2.setSizePolicy(sizePolicy)
        self.groupBox_2.setStyleSheet("QGroupBox{\n"
"    font-size: 20px;\n"
"    font-weight: bold;\n"
"}")
        self.groupBox_2.setObjectName("groupBox_2")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_2)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout()
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.videolabel = QtWidgets.QLabel(self.groupBox_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.videolabel.sizePolicy().hasHeightForWidth())
        self.videolabel.setSizePolicy(sizePolicy)
        self.videolabel.setMaximumSize(QtCore.QSize(16777215, 16777215))
        font = QtGui.QFont()
        font.setFamily("宋体")
        font.setPointSize(14)
        font.setBold(False)
        font.setWeight(50)
        self.videolabel.setFont(font)
        self.videolabel.setAlignment(QtCore.Qt.AlignCenter)
        self.videolabel.setObjectName("videolabel")
        self.verticalLayout_4.addWidget(self.videolabel)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.showvideobutton = QtWidgets.QPushButton(self.groupBox_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.showvideobutton.sizePolicy().hasHeightForWidth())
        self.showvideobutton.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Aharoni")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.showvideobutton.setFont(font)
        self.showvideobutton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.showvideobutton.setObjectName("showvideobutton")
        self.horizontalLayout_4.addWidget(self.showvideobutton)
        self.closevideobutton = QtWidgets.QPushButton(self.groupBox_2)
        font = QtGui.QFont()
        font.setFamily("Aharoni")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.closevideobutton.setFont(font)
        self.closevideobutton.setObjectName("closevideobutton")
        self.horizontalLayout_4.addWidget(self.closevideobutton)
        self.verticalLayout_4.addLayout(self.horizontalLayout_4)
        self.verticalLayout_5.addLayout(self.verticalLayout_4)
        self.gridLayout_2.addWidget(self.groupBox_2, 1, 0, 1, 1)
        self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
        self.groupBox_3.setSizePolicy(sizePolicy)
        self.groupBox_3.setStyleSheet("QGroupBox{\n"
"    font-size: 20px;\n"
"    font-weight: bold;\n"
"}")
        self.groupBox_3.setObjectName("groupBox_3")
        self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.groupBox_3)
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.CPULayout = QtWidgets.QVBoxLayout()
        self.CPULayout.setObjectName("CPULayout")
        self.CPUlabel = QtWidgets.QLabel(self.groupBox_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.CPUlabel.sizePolicy().hasHeightForWidth())
        self.CPUlabel.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("宋体")
        font.setPointSize(14)
        self.CPUlabel.setFont(font)
        self.CPUlabel.setAlignment(QtCore.Qt.AlignCenter)
        self.CPUlabel.setObjectName("CPUlabel")
        self.CPULayout.addWidget(self.CPUlabel)
        self.CPUwidget = QtWidgets.QWidget(self.groupBox_3)
        self.CPUwidget.setObjectName("CPUwidget")
        self.CPULayout.addWidget(self.CPUwidget)
        self.verticalLayout_6.addLayout(self.CPULayout)
        self.RAMLayout = QtWidgets.QVBoxLayout()
        self.RAMLayout.setObjectName("RAMLayout")
        self.RAMlabel = QtWidgets.QLabel(self.groupBox_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.RAMlabel.sizePolicy().hasHeightForWidth())
        self.RAMlabel.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("宋体")
        font.setPointSize(14)
        self.RAMlabel.setFont(font)
        self.RAMlabel.setAlignment(QtCore.Qt.AlignCenter)
        self.RAMlabel.setObjectName("RAMlabel")
        self.RAMLayout.addWidget(self.RAMlabel)
        self.RAMwidget = QtWidgets.QWidget(self.groupBox_3)
        self.RAMwidget.setObjectName("RAMwidget")
        self.RAMLayout.addWidget(self.RAMwidget)
        self.verticalLayout_6.addLayout(self.RAMLayout)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.cpu_arm_start = QtWidgets.QPushButton(self.groupBox_3)
        font = QtGui.QFont()
        font.setFamily("Aharoni")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.cpu_arm_start.setFont(font)
        self.cpu_arm_start.setObjectName("cpu_arm_start")
        self.horizontalLayout_5.addWidget(self.cpu_arm_start)
        self.cpu_arm_close = QtWidgets.QPushButton(self.groupBox_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.cpu_arm_close.sizePolicy().hasHeightForWidth())
        self.cpu_arm_close.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Aharoni")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.cpu_arm_close.setFont(font)
        self.cpu_arm_close.setObjectName("cpu_arm_close")
        self.horizontalLayout_5.addWidget(self.cpu_arm_close)
        self.verticalLayout_6.addLayout(self.horizontalLayout_5)
        self.verticalLayout_6.setStretch(0, 5)
        self.verticalLayout_6.setStretch(1, 5)
        self.gridLayout_2.addWidget(self.groupBox_3, 1, 1, 1, 1)
        self.gridLayout_3.addLayout(self.gridLayout_2, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "中国连续手语识别系统"))
        self.groupBox.setTitle(_translate("MainWindow", "数据集ROI预处理"))
        self.label.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:14pt;\">输入数据集路径:</span></p></body></html>"))
        self.label_2.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:14pt;\">输入生成文件保存路径:</span></p></body></html>"))
        self.label_4.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:14pt;\">请输入开启进程数<br/>(进程越多用时越少):</span></p></body></html>"))
        self.label_3.setText(_translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:12pt; font-weight:600; color:#ff0000;\">*注意:请保证“生成文件保存路径”的剩余磁盘容量大于100G!</span></p><p align=\"center\"><span style=\" font-size:12pt; font-weight:600; color:#ff0000;\">进程数请根据计算机硬件性能进行选择</span></p></body></html>"))
        self.StartButton.setText(_translate("MainWindow", "开始进行ROI计算"))
        self.groupBox_2.setTitle(_translate("MainWindow", "处理效果展示"))
        self.videolabel.setText(_translate("MainWindow", "等待视频加载..."))
        self.showvideobutton.setText(_translate("MainWindow", "随机加载数据集视频"))
        self.closevideobutton.setText(_translate("MainWindow", "关闭视频"))
        self.groupBox_3.setTitle(_translate("MainWindow", "计算机实时性能"))
        self.CPUlabel.setText(_translate("MainWindow", "CPU使用率"))
        self.RAMlabel.setText(_translate("MainWindow", "内存使用率"))
        self.cpu_arm_start.setText(_translate("MainWindow", "开启硬件监视"))
        self.cpu_arm_close.setText(_translate("MainWindow", "停止硬件监视"))

main.py

// An highlighted block
from PyQt5 import QtCore, QtGui, uic, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from first import Ui_MainWindow
import pyqtgraph as pg
import numpy as np
import psutil
from ROI_old import Main
import cv2
import random
from PyQt5.QtWidgets import QFileDialog
from threading import Thread
import os
import sys

class SignRec(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(SignRec, self).__init__()
        self.setupUi(self)
#---------------------视频加载器参数---------------------------
        self.timer_camera = QTimer()
        self.timer_camera.timeout.connect(self.openFrame)
        self.showvideobutton.clicked.connect(lambda :self.slotStart())
        self.closevideobutton.clicked.connect(lambda :self.slotStop())
#------------------------ROI参数-----------------------------
        self.StartButton.clicked.connect(lambda:self.startROI())
#---------------------cpu、arm折线图参数-----------------------
        self.cpu_arm_start.clicked.connect(lambda:self.starttime(1))
        self.cpu_arm_close.clicked.connect(lambda:self.starttime(0))
        self.ptr = 0
        self.cpudata = np.zeros(100)
        self.armdata = np.zeros(100)
        self.cpupw = pg.PlotWidget()
        self.cpucurve = self.cpupw.plot(self.cpudata)
        self.armpw = pg.PlotWidget()
        self.armcurve = self.armpw.plot(self.armdata)
        self.CPULayout.addWidget(self.cpupw)
        self.RAMLayout.addWidget(self.armpw)

# ---------------------视频加载器功能---------------------------
    def slotStart(self):
        inputpath = self.inputedit.text()
        outputpath = self.outputedit.text()
        if inputpath == '':
            self.videolabel.setText('请输入数据集路径')
        elif outputpath == '':
            self.videolabel.setText('请输入保存路径')
        else:
            inputpath = inputpath.split("\\")[-1]
            targetpath = outputpath + "\\" +  inputpath
            all_video_path_list = []
            video_path_list = [os.path.join(targetpath, item) for item in os.listdir(targetpath)]
            for i in range(len(video_path_list)):
                all_video_path_list.append([os.path.join(video_path_list[i], item) for item in os.listdir(video_path_list[i])])
            first = random.randint(0, len(all_video_path_list)-1)
            all_video_path_list = all_video_path_list[first]
            second = random.randint(0, len(all_video_path_list)-1)
            video = all_video_path_list[second]
            self.cap = cv2.VideoCapture(video)
            self.timer_camera.start(33)

    def slotStop(self):
        self.cap.release()
        self.timer_camera.stop()
        self.videolabel.setText('等待加载视频...')

    def openFrame(self):
        if(self.cap.isOpened()):
            ret, frame = self.cap.read()
            if ret:
                frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
                height, width, bytesPerComponent = frame.shape
                bytesPerLine = bytesPerComponent * width
                q_image = QImage(frame.data,  width, height, bytesPerLine, QImage.Format_RGB888)#.scaled(self.videolabel.width(), self.videolabel.height())#注释为增加长宽约束
                self.videolabel.setPixmap(QPixmap.fromImage(q_image))

            else:
                self.cap.release()
                self.timer_camera.stop()
                self.videolabel.setText('视频播放结束!')

#------------------------ROI功能-----------------------------
    def startROI(self):
        def ROI():
            inputpath = self.inputedit.text()
            outputpath = self.outputedit.text()
            core = self.corebox.value()
            Main(inputpath, outputpath, core)
        t = Thread(target=ROI)
        t.start()

#---------------------cpu、arm折线图功能-----------------------
    def starttime(self,getsignal):#启动折线图的更新
        self.timer = QtCore.QTimer()
        if getsignal == 1:
            self.timer.timeout.connect(lambda:self.update_data())
            self.timer.start(1000)
        elif getsignal == 0:
            self.timer.stop()

    def update_data(self):#cpu、arm折线图数据更新
        self.cpudata[:-1] = self.cpudata[1:]
        self.armdata[:-1] = self.armdata[1:]
        self.cpudata[-1] = psutil.cpu_percent(interval=None, percpu=False)
        self.armdata[-1] = psutil.swap_memory().percent
        self.cpucurve.setData(self.cpudata)
        self.armcurve.setData(self.armdata)
        self.ptr += 1
        self.cpucurve.setPos(self.ptr, 0)
        self.armcurve.setPos(self.ptr, 0)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mySignRec = SignRec()
    mySignRec.show()
    sys.exit(app.exec_())

roi.py

// An highlighted block
import cv2
import cv2 as cv
import numpy as np

def weneed(path):
    path=path
    number=0
    flag=0
    cap= cv2.VideoCapture(path)
    while(True):
        number=number+1
        ret,frame=cap.read()
        print(ret)
        if(ret ==False):
            break
        
        if((ret==True)and(flag==0)): 
            frame1=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            judge=sum(sum(frame1))#判断图片是不是啥也没有
            print(flag)
            if(judge>0):
                weneed=frame
                flag=1  
                break
        if(ret==False):
                break
    print('哈哈哈')
    return weneed

def rec(img):
    img =img
    color = (0, 255, 0)
    grey=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    classfier=cv2.CascadeClassifier("D:/ProgramData/Anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml")
    face=classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
    if len(face)>0:
        for rect in face:
            x,y,w,h=rect
            cv2.rectangle(img,(x-250,y-40),(x+w+250,y+h+300),color,3)
    weneedx=x-250
    weneedy=y-40
    weneedw=x+w+250
    weneedh=y+h+300
    cv2.imshow("IF",img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    return weneedx,weneedy,weneedw,weneedh

def splitFrames(videoFileName,x,y,w,h):
    cap = cv2.VideoCapture(videoFileName) # 打开视频文件
    num = 1
    while True:
        # success 表示是否成功,data是当前帧的图像数据;.read读取一帧图像,移动到下一帧
        success, data = cap.read()
        
        if not success:
            break
        data1=data[y:h,x:w]
        # im = Image.fromarray(data) # 重建图像
        # im.save('image' +str(num)+".jpg") # 保存当前帧的静态图像
        cv2.imwrite(str(num)+'.png',data1)
        print(num)
        num = num + 1
        
    cap.release()
    return 0

if __name__=="__main__": 
    path="P08_s1_00_0_color.avi"

    weneed=weneed(path)#有内容图片的第一张
    weneedx,weneedy,weneedw,weneedh=rec(weneed)
    split=splitFrames(path,weneedx,weneedy,weneedw,weneedh)

test.py

import random

a = random.randint(0,1)
print(a)

## 用来处理数据集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值