基于PyQt Python的深度学习图像处理界面开发(二)
Python标准库更多的适合处理后台任务,唯一的图形库tkinter使用起来很不方便,所以后来出现了针对Python图形界面开发的扩展库,例如PyQt。
在介绍PyQt之前,必须先简单介绍一下Qt。Qt是一个C++可视化开发平台,是一个跨平台的C++图形用户界面应用程序框架(C++ GUI),能够为应用程序开发者提供建立图形用户界面所需的功能。Qt是完全面向对象的、易扩展,可应用于组件编程,并可以用于嵌入式开发。它是目前流行的Linux桌面环境KDE 的基础,是Linux和嵌入式操作系统下的主流图形界面开发环境,其最大优势在于只需编写一次代码,就能编译部署在任何操作系统和硬件上。因为擅长图形界面开发,如今更扩展到移动及嵌入式设备开发。对于商业软件公司来说极具价值,可以广泛应用于物联网特别是智能汽车、智能制造业等的研发。
PyQt是一个创建Python GUI应用程序的工具包,是Qt和Python结合的一个产物,可以说是为了将Qt的功能用于Python开发的一个Qt的Python包装器。它是Python编程语言和Qt库的成功融合。
PyQt上手难度还是比较高,不想掉发的,可以看我专栏其它的界面开发教程
https://blog.csdn.net/u013289254/category_12835961.html
下面界面的开发,需要有一点的基础,建议先看看我写的另外一篇文章:基于PyQt Python的深度学习图像处理界面开发(一)-CSDN博客
一. 需求
包装深度学习的界面应该具有以下几个几个基本功能:
1.通过按钮选择图片或者模型
2.显示图片
3.显示运行结果
二.部分代码展示(完整代码看下载链接)
以一个简单的深度学习分类代码作为演示,大家可以基于这个改,该有的功能都有
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'new.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# 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.
import sys
import cv2
import time
from os import getcwd
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import numpy as np
from model import HappyModel
from keras.preprocessing.image import img_to_array
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(490, 616)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(150, 20, 281, 20))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(50, 60, 93, 28))
self.pushButton.setObjectName("pushButton")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(50, 110, 410, 410))
self.label_2.setObjectName("label_2")
self.label_result = QtWidgets.QLabel(Form)
self.label_result.setGeometry(QtCore.QRect(270, 560, 201, 21))
self.label_result.setObjectName("label_result")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(190, 560, 81, 21))
self.label_5.setObjectName("label_5")
model_path = "logs/HappyModel_model_logep042-accuracy0.966-val_accuracy0.999.h5"
self.IMG_W = 96
self.IMG_H = 96
self.model = HappyModel((self.IMG_H, self.IMG_W, 3))
self.model.load_weights(model_path)
self.EMOTIONS = ['Apple_Braeburn', 'Banana', 'Blueberry', 'Cherry', 'Chestnut', 'Cocos', 'Corn', 'Eggplant',
'Fig', 'Ginger_Root', 'Granadilla', 'Lemon', 'Onion_Red', 'Orange', 'Pear']
self.retranslateUi(Form)
self.centralwidget = QtWidgets.QWidget(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "水果识别分类系统"))
self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">水果识别分类系统</span></p></body></html>"))
self.pushButton.setText(_translate("Form", "选择图片"))
self.label_2.setText(_translate("Form", " 显示图片"))
self.label_result.setText(_translate("Form", "None"))
self.label_5.setText(_translate("Form", "识别结果:"))
def cv_imread(self,filePath):
# 读取图片
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
## imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
## cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)
return cv_img
def choose_pic(self):
pass
QtWidgets.QApplication.processEvents()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
baseWidget = QtWidgets.QWidget() # 创建窗口的基类QWidget的实例
ui = Ui_Form() # 创建UI窗口的实例
ui.setupUi(baseWidget) # 以baseWidget作为传递参数
baseWidget.show()
##ui.LabHello.setText("Hello,被程序修改") #可以修改窗体上标签的文字
sys.exit(app.exec_())
三. 运行结果显示
🔥计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!
✍🏻作者简介:机器学习,深度学习,卷积神经网络处理,图像处理
🚀B站项目实战:https://space.bilibili.com/364224477
😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+
🤵♂代做需求:@个人主页
整套项目源码内容包含
整套界面程序和深度学习推理代码