我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用Python给图像算法做个简单应用界面

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用Python给图像算法做个简单应用界面

以前在Windows上做界面用MFC,现在做算法都是基于Python,所以转用Python的Tkinter库来做。主要是能使用Opencv和Torch处理数据,然后在界面上显示。

效果如下:

主要包括3个板块,其余还有一些小功能:

显示固定的图片。或从电脑加载一张图片并显示(涉及到按钮的响应函数编写和弹窗)

下拉框和文本框的使用

进度条的使用(涉及到多线程)

Tkinter支持控件自动调整布局,但是时间比较赶就不研究了,使用固定位置布局,界面也不给调整。

控件名称

  • Buttom 按钮,软件交互功能实现
  • Label (叫什么不重要),用来显示图片或文字
  • ComboBox 下拉框,做选择
  • Entry 文本框,做文本输入
  • Progressbar 进度条,算法跑起来之后显示进度
  • LabelFrame (...),灰色的框框,模块化布局控件

代码如下:


import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox
import tkinter.filedialog
import cv2 as cv
from PIL import Image, ImageTk
import time
import threading
 
RELIEF=['flat', 'raised', 'sunken', 'solid', 'ridge', 'groove']
CURSOR=['arrow','circle','clock','cross','dotbox','exchange',
        'fleur','heart','man','mouse','pirate','plus',
        'shuttle','sizing','spider','spraycan','star','target',
        'tcross','trek','watch']
 
def PIL2CV(im):
    im = im[:, :, ::-1]
    return ImageTk.PhotoImage(Image.fromarray(im))
 
def Buttom1_CallBack():
    filename = tk.filedialog.askopenfilename() #弹出文件选择对话框
    if filename=='': #用户没有选择任何文件
        return
    new_img = cv.imread(filename)
    if new_img is None:
        tk.messagebox.showerror('抱歉', '图片加载失败!')
        return
    new_img = cv.resize(new_img, (130, 120))
    new_img = PIL2CV(new_img)
    #后面两句实现图片切换显示
    Label2.configure(image=new_img, width=130, height=120)
    Label2.image = new_img
    tk.messagebox.showinfo('提示','加载图片完成!')
 
def Buttom2_CallBack():
    info = Combobox1.get()
    param = Entry1.get()
    tk.messagebox.showwarning('警告', '你选择了:'+info+' '+param)
 
def process_code(delay):
    for i in range(100):
        Progressbar1['value'] = i+1
        root.update()
        time.sleep(delay)
    Buttom3.configure(text='开始处理', state='normal')
    tk.messagebox.showinfo('提示', '处理完成!')
    Progressbar1.configure(value=0)
 
def Buttom3_CallBack():
    yn = tk.messagebox.askyesno('警告','是否需要开始处理?')
    if not yn:
        return
 
    Buttom3.configure(text='处理中...', state='disabled') #控件失效
    delay = 0.01
 
    # 单独开一个线程,绑定线程函数process_code,参数后面的','很关键
    # 不开线程界面会进入处理函数死循环,用户体验不太好
    t = threading.Thread(target=process_code, args=(delay,))
    t.start()
 
def Buttom4_CallBack():
    global page_count
    if page_count<=0:
        page_count = 0
        return
    else:
        page_count -= 1
        Label4.configure(text='第'+str(page_count)+'页')
    return
 
def Buttom5_CallBack():
    global page_count
    if page_count>=100:
        page_count = 100
        return
    else:
        page_count += 1
        Label4.configure(text='第' + str(page_count) + '页')
    return
 
#上面是控件的响应函数
################################################################################
#下面是界面控件的布局
 
#主界面
root = tk.Tk()
root.title('python界面测试') #修改界面标题
root.iconbitmap('img/tm.ico') #修改界面ico
root.geometry('800x500') #设定界面尺寸 HxW
root.resizable(width=False, height=False) #不允许调整窗口大小,不固定删除此行
 
#添加两个板块边界框
Frame1 = tk.LabelFrame(root, height=200, width=145)
Frame1.place(x=15, y=100)
Frame2 = tk.LabelFrame(root, text="结果显示", height=400, width=620)
Frame2.place(x=170, y=5)
 
#添加图片显示框、加载图片框、加载图片按钮
img = cv.imread('img/title.jpg') #opencv加载图片
img = cv.resize(img, (140,70)) #图片缩放
img = PIL2CV(img) #opencv格式转pillow
Label1 = tk.Label(root, image=img) #初始化默认图片
Label1.place(x=15, y=20) #图片显示框在界面上的位置
 
Label2 = tk.Label(root,
                  width=18,height=7, #控件大小(注意单位不是像素)
                  bg="white") #默认白色背景
Label2.place(x=20,y=110) #图片显示框在界面上的位置
 
Buttom1 = tk.Button(root,
                    width=15,height=1, #按钮大小
                    text='加载检索图片', #按钮文本
                    relief=RELIEF[3], #按钮的风格
                    command=Buttom1_CallBack) #绑定响应函数
Buttom1.place(x=25, y=250) #按钮在界面上的位置
 
#添加参数文本框、下拉框、下拉框内容输出按钮
Combobox1 = ttk.Combobox(root, width=17, height=1)
Combobox1['value'] = ('窗前明月光','疑是地上霜','举头望明月','明月照我影')
Combobox1.current(0)
Combobox1.place(x=15, y=320)
 
Label3 = tk.Label(root, text='参数')
Label3.place(x=15, y=350)
 
Entry1 = ttk.Entry(root, width=9) #文本框为啥没有H
Entry1.place(x=50, y=350)
Entry1.insert(0,'0.5')
 
Buttom2 = tk.Button(root,
                    width=15,height=1,
                    text='你选择了什么?',
                    relief=RELIEF[3],
                    command=Buttom2_CallBack)
Buttom2.place(x=25, y=380)
 
#添加进度条、开始处理按钮
Progressbar1 = ttk.Progressbar(root, length=600, value=0, cursor=CURSOR[1])
Progressbar1.place(x=15, y=460)
 
Buttom3 = tk.Button(root,
                    width=15,height=1,
                    text='开始处理',
                    relief=RELIEF[3],
                    command=Buttom3_CallBack)
Buttom3.place(x=630, y=455)
 
#添加两个滚动按钮
Buttom4 = tk.Button(root,
                    width=3,height=1,
                    text='<',
                    relief=RELIEF[1],
                    command=Buttom4_CallBack)
Buttom4.place(x=380, y=410)
 
global page_count #全局变量,用来控制页码
page_count=0
Label4 = tk.Label(root, text='第0页')
Label4.place(x=420, y=410)
 
Buttom5 = tk.Button(root,
                    width=3,height=1,
                    text='>',
                    relief=RELIEF[1],
                    command=Buttom5_CallBack)
Buttom5.place(x=470, y=410)
 
root.mainloop()
#这句话后面不能有代码

以上就是用Python给图像算法做个简单应用界面的详细内容,更多关于python 应用界面的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用Python给图像算法做个简单应用界面

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用Python给图像算法做个简单应用界面

以前在Windows上做界面用MFC,现在做算法都是基于Python,所以转用Python的Tkinter库来做。主要是能使用Opencv和Torch处理数据,然后在界面上显示。 效果如下: 主要包括3个板块,其余还有一些小功能: 1、显示
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录