界面转化命令
python -m PyQt5.uic.pyuic ./UI_1creat.ui -o ./UI_1UI.py
調用代碼
from PyQt5.QtWidgets import QApplication,QMainWindow,QFileDialog from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5 import QtWidgets, QtCore, QtGui #导入图像库 import cv2 import numpy as np import datetime from qrcode_test import * #进程测试 #import multiprocessing import sys #线程测试 import threading from queue import Queue from multiprocessing import Process,Manager #导入自己创建的图形类 from UI_1UI import * import time import RPi.GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) pinA1=17 GPIO.setup(pinA1, GPIO.OUT) #设置脚为输出模式 GPIO.output(pinA1, GPIO.HIGH) #关闭 默认 #一个是这个类本身的,一个是这个类继承 class Example(QMainWindow,Ui_Form): def __init__(self,ShareImages,Lock): #类的初始化 super(Example, self).__init__() self.setupUi(self)#界面控件初始化 #获取共享内存,外部参数数据和数据锁 self.ShareImages=ShareImages self.Lock=Lock #相机线程初始化 self.CAM_Int() def recongQR(self): self.ShareImages[1]=1 ''' if self.ShareImages[1]==1: self.ShareImages[1]=0 else: self.ShareImages[1]=1 ''' def opendoor(self): GPIO.output(pinA1, GPIO.LOW) #亮LOW _translate = QtCore.QCoreApplication.translate self.label_tongxing.setText(_translate("Form", "手动打开闸门")) def closedoor(self): GPIO.output(pinA1, GPIO.HIGH) #亮 _translate = QtCore.QCoreApplication.translate self.label_tongxing.setText(_translate("Form", "手动关闭闸门")) def CAM_Int(self): #self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #按钮绑定函数 self.pushButton.clicked.connect(self.recongQR) #开始按键 self.pushButton_2.clicked.connect(self.opendoor) #开始按键 self.pushButton_3.clicked.connect(self.closedoor) #开始按键 #定时器20毫秒更新画板 self.timer = QTimer(self) self.timer.timeout.connect(self.CAM_SetImage) self.timer.start(25) #单位为毫秒 #配合定时器刷新图像显示 def CAM_SetImage(self): _translate = QtCore.QCoreApplication.translate with self.Lock: frame=self.ShareImages[0]#数据转化后才能用,不然只是一个numpy数组 rgbImage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) convertToQtFormat = QtGui.QImage(rgbImage.data, rgbImage.shape[1], rgbImage.shape[0], QImage.Format_RGB888) #在这里可以对每帧图像进行处理, qtimg = convertToQtFormat.scaled(640, 480, Qt.KeepAspectRatio) self.label_img.setPixmap(QPixmap.fromImage(qtimg))#窗口刷新 if self.ShareImages[1]==2:#识别成功 #print("识别结果") #print(self.ShareImages[3]) if self.ShareImages[3]=="None": self.label_shibie.setText(_translate("Form", "识别失败,请放好重新识别!")) print("识别失败,请放好重新识别!") else: self.label_shibie.setText(_translate("Form", "识别成功,正在验证...")) print("识别成功,正在验证...") #判断是否满足时间 dateTime=self.lineEditDate.text() print("期限时间:",dateTime,"识别时间:",self.ShareImages[3]) rec=str(self.ShareImages[3]).strip('\n')#识别结果 result=self.compare_time(rec,str(dateTime)) if result: print("在有效期限内") self.label_shibie.setText(_translate("Form", "识别成功,在有效期限内\n"+rec)) self.label_tongxing.setText(_translate("Form", "自动打开闸门")) GPIO.output(pinA1, GPIO.LOW) #亮 GPIO.output(pinA1, GPIO.HIGH) #关 else: print("不在有效期内") self.label_shibie.setText(_translate("Form", "识别成功,不在有效期内\n"+rec)) self.label_tongxing.setText(_translate("Form", "自动关闭闸门")) GPIO.output(pinA1, GPIO.HIGH) #亮HIGH print(result) #根据结果修改状态 self.ShareImages[1]=0 def closeEvent(self, event): self.ShareImages[2]=1#必须通过共享内存数据,强制关闭采集进程 print("QT关闭窗口") """ time格式 '2018-01-03 16:26:23' """ def compare_time(self,startTime,endTime): #now = datetime.datetime.now () d_start = datetime.datetime.strptime (startTime, '%Y-%m-%d %H:%M:%S') d_end = datetime.datetime.strptime (endTime, '%Y-%m-%d %H:%M:%S') #result = (d_start<=now) and (d_end>=now) result = (d_start==d_end) return result #result = compare_time('2018-01-03 16:26:23','2018-02-03 16:29:55') #print(result) def Getvideo(images,lock): cap = cv2.VideoCapture(0) #cap.set(cv2.CAP_PROP_FRAME_WIDTH,800) #cap.set(cv2.CAP_PROP_FRAME_HEIGHT,600) #cap.set (cv2.CAP_PROP_FPS,25) while (cap.isOpened()): #print(images[1]) if images[2]==1: print("采集进程关闭窗口") break ret, frame = cap.read() if ret: with lock: if images[1]==1: cv2.imwrite('Saveimage.png',frame) images[3]=konw_qrcode('Saveimage.png') images[1]=2#识别结束 images[0]=frame else: #break continue if __name__ == '__main__': #---------------------开启一个单独进程,采集+识别-------------------- #共享内存数据 h=480 #图像默认高 w=640 #图像默认宽 img = cv2.imread("Saveimage.png", 1)#默认底板图片 img = cv2.resize(img,(w,h),) #大小调整 lock = Manager().Lock()#创建共享内存容器 ShareImages=Manager().dict()#存str类型数据 ShareImages[0]=img#图像数据使用前必须初始化一个图像 ShareImages[1]=0#用于控制保存图像和开始识别 ShareImages[2]=0#用于QT界面关闭按键,关闭采集进程 ShareImages[3]="None"#识别结果 p = Process(target=Getvideo, args=(ShareImages,lock))#开启进程 p.deamon=True #伴随主进程关闭而关闭,但是有时候还是关闭不了,单独搞个标志位来控制 p.start()#开始 #----------------------QT界面主进程-------------------------------- app = QApplication(sys.argv) ui=Example(ShareImages,lock) #ShareImages共享内存数据 lock 共享数据锁 ui.show() sys.exit(app.exec_())
界面代碼
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file './UI_1creat.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(1445, 748) font = QtGui.QFont() font.setPointSize(24) Form.setFont(font) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(100, 80, 451, 41)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(143, 146, 147)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) self.label.setPalette(palette) self.label.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Form) self.label_2.setGeometry(QtCore.QRect(90, 130, 451, 41)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 85, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 85, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(143, 146, 147)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) self.label_2.setPalette(palette) font = QtGui.QFont() font.setPointSize(16) self.label_2.setFont(font) self.label_2.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(Form) self.label_3.setGeometry(QtCore.QRect(50, 220, 171, 41)) font = QtGui.QFont() font.setPointSize(20) self.label_3.setFont(font) self.label_3.setObjectName("label_3") self.lineEditDate = QtWidgets.QLineEdit(Form) self.lineEditDate.setGeometry(QtCore.QRect(240, 230, 301, 32)) font = QtGui.QFont() font.setPointSize(18) self.lineEditDate.setFont(font) self.lineEditDate.setObjectName("lineEditDate") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(290, 310, 151, 41)) font = QtGui.QFont() font.setPointSize(18) self.pushButton.setFont(font) self.pushButton.setObjectName("pushButton") self.label_img = QtWidgets.QLabel(Form) self.label_img.setGeometry(QtCore.QRect(640, 60, 771, 651)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 170, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 170, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(143, 146, 147)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) self.label_img.setPalette(palette) self.label_img.setAlignment(QtCore.Qt.AlignCenter) self.label_img.setObjectName("label_img") self.label_5 = QtWidgets.QLabel(Form) self.label_5.setGeometry(QtCore.QRect(80, 400, 171, 41)) font = QtGui.QFont() font.setPointSize(20) self.label_5.setFont(font) self.label_5.setObjectName("label_5") self.label_shibie = QtWidgets.QLabel(Form) self.label_shibie.setGeometry(QtCore.QRect(280, 380, 311, 91)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(0, 170, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 170, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(143, 146, 147)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) self.label_shibie.setPalette(palette) font = QtGui.QFont() font.setPointSize(20) self.label_shibie.setFont(font) self.label_shibie.setObjectName("label_shibie") self.label_7 = QtWidgets.QLabel(Form) self.label_7.setGeometry(QtCore.QRect(80, 500, 171, 41)) font = QtGui.QFont() font.setPointSize(20) self.label_7.setFont(font) self.label_7.setObjectName("label_7") self.label_tongxing = QtWidgets.QLabel(Form) self.label_tongxing.setGeometry(QtCore.QRect(280, 500, 311, 41)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(0, 85, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 85, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(143, 146, 147)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) self.label_tongxing.setPalette(palette) font = QtGui.QFont() font.setPointSize(20) self.label_tongxing.setFont(font) self.label_tongxing.setObjectName("label_tongxing") self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(160, 610, 151, 41)) font = QtGui.QFont() font.setPointSize(18) self.pushButton_2.setFont(font) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_3 = QtWidgets.QPushButton(Form) self.pushButton_3.setGeometry(QtCore.QRect(410, 610, 151, 41)) font = QtGui.QFont() font.setPointSize(18) self.pushButton_3.setFont(font) self.pushButton_3.setObjectName("pushButton_3") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "火车票二维码识别验票系统设计")) self.label_2.setText(_translate("Form", "2021届毕业生 测控162 江雪婷")) self.label_3.setText(_translate("Form", "请输入时间:")) self.lineEditDate.setText(_translate("Form", "2021-03-03 16:26:23")) self.pushButton.setText(_translate("Form", "检测识别")) self.label_img.setText(_translate("Form", "检测识别窗口")) self.label_5.setText(_translate("Form", "识别结果:")) self.label_shibie.setText(_translate("Form", "等待识别结果......")) self.label_7.setText(_translate("Form", "通行结果:")) self.label_tongxing.setText(_translate("Form", "等待通行结果......")) self.pushButton_2.setText(_translate("Form", "开闸门")) self.pushButton_3.setText(_translate("Form", "关闸门"))
标签:QtGui,Form,引脚,self,样例,label,brush,界面显示,QtCore From: https://www.cnblogs.com/gooutlook/p/16749815.html