GUI界面+简单图像处理(RGB图像转素描图)

GUI界面+简单图像处理(RGB图像转素描图)

距上次更新已经隔了一段时间,最近在忙别的学习所以更新较慢,但是我会坚持更新下去,人嘛总得有一些事慢慢坚持去做<哈哈哈 开始干活!!!>

##导入所需要的库(为了加强学习,通过走弯路学习更多的库使用)

import tkinter
import tkinter.messagebox as msgbox  #创建消息盒子
from PIL import Image        # 导入图像处理函数库
import matplotlib.pyplot as plt    #显示处理图像
import os
import cv2

###定义点击按钮功能函数

def buttonOK_click():
    tem = entryname.get()
    if (len(tem)!=0)and(os.path.exists(tem)):
        View(Pic_process(tem))  #图像处理
    else:
        msgbox.showinfo("提示", "转换失败")

###定义重置按钮功能函数

def buttonRE_click():
    varname.set("")  # 重置为空

###定义图像处理函数

def Pic_process(SRC):
    img_rgb = cv2.imread(SRC)  # 获取RGB图像
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)  # 获取灰度图像
    # 利用高斯滤波函数进行滤波虚化,ksize为卷积核大小,必须为奇数
    img_blur = cv2.GaussianBlur(img_gray, ksize=(11, 11), sigmaX=0, sigmaY=0)
    # 将灰度图和高斯滤波图进行叠加,获得素描图
    img_blend = cv2.divide(img_gray, img_blur, scale=255)
    cv2.imwrite("Sketch.jpg", img_blend)

    return os.getcwd() + "\Sketch.jpg"

###定义显示素描图像函数

def View(x):
    img_open = Image.open(x)
    plt.figure("Sketch")
    plt.imshow(img_open)
    plt.axis('off')
    plt.show()

###主函数

def main():
    global entryname,varname

    #初始化设置
    window = tkinter.Tk()  #创建一个窗体实例
    window.title('First_window')  #窗口名称
    window.geometry('600x200+400+200')  #设置窗口的大小以及屏幕位置   宽x高+水平方向位置+垂直方向位置

    #创建用户名标签
    lbname = tkinter.Label(window,text="原图地址(禁止中文路径)")  #创建标签
    lbname.grid(row=0,column=0,ipadx=20,ipady=60)  #设置标签布局
    #创建当行输入
    #创建控制控件的变量  从TK库中创建string类型的变量对象,将变量与对象进行绑定然后控制
    varname = tkinter.StringVar()
    entryname = tkinter.Entry(window,width=50,textvariable=varname)  #textvariable为文本变量
    entryname.grid(row=0,column=1,columnspan=2)

    #创建开始按键
    buttonOK = tkinter.Button(window,text="开始",width=5,command=buttonOK_click)
    buttonOK.grid(row=2,column=1)
    #创建重置按钮
    buttonRE = tkinter.Button(window,text="重置",width=5,command=buttonRE_click)
    buttonRE.grid(row=2,column=2)  #设置布局

    window.mainloop()  # 进入消息循环才能显示窗口

###函数入口

if __name__ == '__main__':
    main()

本次的代码比较简单,逻辑也不是很复杂,主要是在运用各个库函数时有一些控件使用上需要注意,编程语言的学习我认为最主要的还是在于运用,与其去纠结语法规则,不如在实际的操作中去学习强化,这样映像也会更加深刻,另外有很多的特殊情况也只有在实际的应用中才会深有体会。由于现在这个快速发展的时代,技术的更替远远是大于书本知识的更迭,所以一定要在打牢基础的同时加强加强加强实操应用,python语言的复杂度广度运用方面还有许多需要学习,在实际的很多情况中都是一大助力,加油学习!

“希望我们各自都可以朝着不同的方向越走越远”——哈哈哈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值