基于Tkinter的深度学习图像处理界面开发(二)

        现在很多搞算法的人,跑跑代码,比如训练和测试代码搞得飞溜,但想把算法代码打包成一个软件,比如给它包装一个界面,就不会了,有些人会推荐用qt做界面,但qt的上手难度还是比较高,如果我们只是简单的做一个gui界面,而大费周章去学习qt,感觉就得不偿失,有空的话,多看两篇论文不好吗?

        Tkinter(即 tk interface,简称“Tk”)本质上是对Tcl/Tk软件包的Python接口封装,属于Python自带的标准库,安装好Python后可以直接使用Tkinter库而无须另行安装。Tkinter库作为Python GUI开发工具之一,具备GUI库的常用功能,可以说“麻雀虽小,五脏俱全”。当您想要制作一个简单的桌面应用程序或者小工具的界面时,Tkinter库绝对是一个最佳的选择。

        下面界面的开发,需要有一点的基础,建议先看看我写的另外一篇文章:基于Tkinter的深度学习图像处理界面开发(一)-CSDN博客

 

一. 需求

       包装深度学习的界面应该具有以下几个几个基本功能:

       1.通过按钮选择图片或者模型

       2.显示图片

       3.显示运行结果

二.部分代码展示(完整代码看下载链接)

        以一个简单的深度学习分类代码作为演示,大家可以基于这个改,该有的功能都有

#!/usr/bin/env python3
import cv2
import numpy as np
from PIL import Image
from model import HappyModel
from tensorflow.keras.utils import img_to_array
import tkinter.messagebox as messagebox
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
import os
from tkinter.filedialog import askopenfilename, asksaveasfilename
import cv2
import numpy as np

file_path = os.path.dirname(__file__)

WIN_WIDTH = 400
WIN_HEIGHT = 400

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)

EMOTIONS = ['Apple_Braeburn', 'Banana', 'Blueberry', 'Cherry', 'Chestnut', 'Cocos', 'Corn', 'Eggplant',
                 'Fig', 'Ginger_Root', 'Granadilla', 'Lemon', 'Onion_Red', 'Orange', 'Pear']

class Image_sys():
    def __init__(self):
        self.root = tk.Tk()
        self.root.geometry('400x400')
        self.root.title('基于神经网络CNN水果分类系统')  # 设置窗口标题
        self.root.iconbitmap('icon/conan.ico')  # 设置窗口图标
        self.root.resizable(False, False)



        # 创建一个容器,其父容器为self.root
        self.frame_scr = ttk.LabelFrame(self.root, text="Scour image:")
        # padx  pady   该容器外围需要留出的空余空间
        self.frame_scr.place(x=80, y=40, width=250, height=250)


        self.label_scr_image = None
        self.label_des_image = None
        self.path = ''
        self.root.mainloop()


    def open_file(self):
        # 打开文件对话框
        open_img_path = askopenfilename(initialdir=file_path,
                                        filetypes=[("jpg格式", "jpg"), ("png格式", "png"), ("bmp格式", "bmp")],
                                        parent=self.root,
                                        title='打开自定义图片')
        if (open_img_path == ''):
            return
        else:
            if (self.label_des_image != None):
                self.label_des_image.pack_forget()  # 隐藏控件
                self.label_des_image = None
            self.path = open_img_path
            image = Image.open(self.path)
            show_img = image.resize((250, 250))
            tk_image = ImageTk.PhotoImage(show_img)
            if (self.label_scr_image == None):
                self.label_scr_image = tk.Label(self.frame_scr, image=tk_image)
            self.label_scr_image.configure(image=tk_image)
            self.label_scr_image.pack()  # 显示控件

            pil_image = image.resize((IMG_W, IMG_H))

            # 将 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()]  # 选取最大概率的表情类
            self.root.mainloop()



if __name__ == '__main__':
    Image_sys()

三. 运行结果显示

代码的下载路径(新窗口打开链接)基于Tkinter的深度学习图像处理界面开发

有问题可以私信或者留言,有问必答

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值