Python 中的图形用户界面(Graphical User Interfa GUI)开发库有很多,较为突出有:Tkinter 、PyQt 和 wxPython。 推荐大家使用wxPython 开发图形用户界面。
1、Tkinter 是 Python 官方提供的图形用户界面开发库,用于封装Tk GUI工具包,跨平台。但是 Tkinter 工具包所含的控件较少,帮助文档不健全,不便于我们开发复杂的图形用户界面。
2、PyQt 是非Python官方提供的图形用户界面开发库,用于封装Qt 工具包,跨平台若想使用PyQt 工具包,则需要额外安装软件包。
3、wxPython 是非Python官方提供的图形用户界面开发库,也跨平台。他提供了丰富的控件,可用于开发复杂的图形用户界面。它的工具包帮助文档很完善,案例也很丰富。
下面界面的开发,需要有一点的基础,建议先看看我写的另外一篇文章:基于wxPython的深度学习图像处理界面开发(一)-CSDN博客
一. 需求
包装深度学习的界面应该具有以下几个几个基本功能:
1.通过按钮选择图片或者模型
2.显示图片
3.显示运行结果
二.部分代码展示(完整代码看下载链接)
以一个简单的深度学习分类代码作为演示,大家可以基于这个改,该有的功能都有
#!/bin/python
import wx
from PIL import Image
import numpy as np
from model import HappyModel
from tensorflow.keras.utils import img_to_array
import warnings
warnings.filterwarnings('ignore')
import os
import cv2
EMOTIONS = ['Apple_Braeburn', 'Banana', 'Blueberry', 'Cherry', 'Chestnut', 'Cocos', 'Corn', 'Eggplant',
'Fig', 'Ginger_Root', 'Granadilla', 'Lemon', 'Onion_Red', 'Orange', 'Pear']
def reload_net():
model_path = "logs/HappyModel_model_logep042-accuracy0.966-val_accuracy0.999.h5"
IMG_W = 96
IMG_H = 96
model_cnn = HappyModel((IMG_H, IMG_W, 3))
model_cnn.load_weights(model_path)
return model_cnn
def evaluate_one_image(pil_image):
model_cnn = reload_net()
# 将 PIL 图像转换为 NumPy 数组
np_array = np.array(pil_image)
# 创建 OpenCV 图像对象
cv_image = cv2.cvtColor(np_array, cv2.COLOR_RGB2BGR)
image_re = cv_image.astype("float") / 255.0
image_re = img_to_array(image_re)
image_re = np.expand_dims(image_re, axis=0)
# 用模型预测各分类的概率
preds = model_cnn.predict(image_re)[0]
# emotion_probability = np.max(preds) # 最大的概率
label = EMOTIONS[preds.argmax()] # 选取最大概率的表情类
return label
class HelloFrame(wx.Frame):
def __init__(self,*args,**kw):
super(HelloFrame,self).__init__(*args,**kw)
pnl = wx.Panel(self)
self.pnl = pnl
st = wx.StaticText(pnl, pos=(200, 0))
font = st.GetFont()
font.PointSize += 10
font = font.Bold()
st.SetFont(font)
# 选择图像文件按钮
btn = wx.Button(pnl, -1, "打开图片")
btn.Bind(wx.EVT_BUTTON, self.OnSelect)
self.makeMenuBar()
self.CreateStatusBar()
def makeMenuBar(self):
menuBar = wx.MenuBar()
self.SetMenuBar(menuBar)
def OnSelect(self, event):
pass
# 生成图片控件
def initimage(self, name):
pass
return sb
if __name__ == '__main__':
app = wx.App()
frm = HelloFrame(None, title='基于神经网络CNN水果分类系统', size=(600,600))
frm.Show()
app.MainLoop()
三. 运行结果显示
代码的下载路径(新窗口打开链接):基于wxPython的深度学习图像处理界面开发
有问题可以私信或者留言,有问必答