python|【Python】自己动手实现一个带界面的自动抠图小程序

前面介绍了怎么利用python抠除图片的背景,但是它还具有一定的局限性,比如说,我们要把要抠图的图片放到指定的路径下去,然后修改一下程序里面抠图的名称等等,这些都是有很多约束的。
下面的代码来改进一下程序,让它运行后我们可以自己选择要去除背景的图片,并且具有界面窗口和按钮,是不是看起来更加专业呢?! 还能根据不同图片格式进行筛选哦哦,简直像极了小程序,一起来看看吧~

界面化抠图程序 1、先睹为快 首先来看一下效果,就是下图当中这个白色窗口
python|【Python】自己动手实现一个带界面的自动抠图小程序
文章图片

python|【Python】自己动手实现一个带界面的自动抠图小程序
文章图片

2、实现原理 主要依赖Tkinter来实现本地窗口的,Tkinter是 Python的标准 TK GUI工具包的接口,它可以在大多数的Unix平台下使用,同样可以应用在 Windows和Macintosh系统里。Tk80的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
代码部分也不是很多很复杂
强调一下:里面的API接口密钥这在上一篇博客里面已经提到了,获取步骤也很简单,只需要登录注册就能找到你的专属API密钥:https://blog.csdn.net/weixin_44566432/article/details/107840109
包括抠图的程序介绍,下面很好理解,主要是设置窗口属性,以及完成选择和生成图片功能函数。

import os from tkinter import Tk, Menu, Label, Button from tkinter.filedialog import askopenfilenames from tkinter.messagebox import showinfo from removebg import RemoveBgrmbg = RemoveBg('你的API接口密钥!!!', 'error.log')#!!!def remove_bg(img_path): rmbg.remove_background_from_img_file(img_path)IMGPATH = ''class GUI(object): def __init__(self, window): self.window = window self.window.title('去除图片背景') self.window.geometry('300x200') menubar = Menu(self.window)#定义空菜单 filemenu = Menu(menubar, tearoff=0) filemenu.add_command(label='帮助', command=self.helpme) filemenu.add_separator()#显示 self.l = Label(window, text='') self.l.pack(padx=5, pady=10) #固定窗口#选择照片 btn1 = Button(window, text='选择照片', width=15, height=2, command=self.get_img) btn1.pack()#生成图片 self.send_btn = Button(window, text='去除背景', width=15, height=2, command=self.gen_img) self.send_btn.pack()def helpme(self): showinfo('帮助', '请关注公众号,联系作者')#选择图片 def get_img(self): global IMGPATH #选择文件 filenames = askopenfilenames(filetypes=(('jpeg img', '*.jpeg'), ('jpg img', '*.jpg'), ('png img', "*.png") )) if len(filenames) > 0: fnlist = [fn for fn in filenames] fnstr = '\n'.join(fnlist) self.l.config(text=fnstr) IMGPATH = fnlist else: self.l.config(text='目前没有选择任何图片文件')#生成图片 def gen_img(self): global IMGPATH respathlist = [] for imgpath in IMGPATH: filepath, tempfilename = os.path.split(imgpath) filename, extension = os.path.splitext(tempfilename) remove_bg(imgpath) respathlist.append(imgpath) respath = ' '.join(respathlist) showinfo('完成生成', f'图片处理完成,路径为: {respath}')#创建窗口 window = Tk() GUI(window) #显示窗口,必须在所有控件后 window.mainloop()

有什么问题欢迎留言讨论~
如果有什么不对的地方,敬请指正,谢谢!
【python|【Python】自己动手实现一个带界面的自动抠图小程序】

    推荐阅读