前面介绍了怎么利用python抠除图片的背景,但是它还具有一定的局限性,比如说,我们要把要抠图的图片放到指定的路径下去,然后修改一下程序里面抠图的名称等等,这些都是有很多约束的。
下面的代码来改进一下程序,让它运行后我们可以自己选择要去除背景的图片,并且具有界面窗口和按钮,是不是看起来更加专业呢?! 还能根据不同图片格式进行筛选哦哦,简直像极了小程序,一起来看看吧~
界面化抠图程序
1、先睹为快 首先来看一下效果,就是下图当中这个白色窗口
文章图片
文章图片
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】自己动手实现一个带界面的自动抠图小程序】
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)