一级目录
标题 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)
## 用来处理数据集