1.编写去除背景函数
首先到 https://www.remove.bg/zh 这个网站取注册一个账号,然后到我的控制面板去找到API密钥,免费用户每个月可以处理50张低分辨率(625*400)的抠图。
在编写处理函数之前我们先要使用pip安装removebg模块
pip install removebg
然后开始编写处理函数
from removebg import RemoveBg #导入removebf模块
rmbg = RemoveBg('此处填写API密钥','error.log')
def remove_bg(image_path):
"""
去除图片背景
"""
rmbg.remove_background_from_img_file(image_path)
2.搭建界面
接下来创建main.py文件,使用Tkinter创建界面,并调用函数
import os
from tkinter import Tk, Menu, Button
from tkinter import filedialog
from tkinter import messagebox
from RemoveBG import remove_bg
import threading as th
ImagePath = ''
class GUI(object):
def __init__(self, window):
self.window = window
self.window.title('专业去背景 v1.0')
self.window.geometry('300x200')
# 生成图片
self.btn2 = Button(window, text='开始抠图', width=15, height=2, command=self.gen_img)
self.btn2.place(relx=0.5, rely=0.5, anchor='center')
# 菜单
menu_bar = Menu(window)
window.config(menu=menu_bar)
menu_file = Menu(menu_bar, tearoff=0)
menu_help = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='文件', menu=menu_file)
menu_bar.add_cascade(label='帮助', menu=menu_help)
menu_file.add_command(label='打开', command=self.get_img)
menu_file.add_separator()
menu_file.add_command(label='退出', command=lambda: window.destroy())
menu_help.add_command(label='关于', command=self.about)
def about(self):
messagebox.showinfo('关于', '请搜索并关注微信公众号「XRLoft」或访问https://www.xrloft.com')
def get_img(self):
"""选择图片"""
global ImagePath
filenames = filedialog.askopenfilenames(
filetypes=(('jpg img', '*.jpg'), ('jpeg img', '*.jpeg'), ('png img', '*.png')))
if len(filenames) > 0:
fn_list = [fn for fn in filenames]
fn_str = '\n'.join(fn_list)
print(fn_str)
# self.label.config(text=fn_str)
ImagePath = fn_list
def gen_img(self):
"""保存图片"""
global ImagePath
res_path_list = []
for path in ImagePath:
file_path, temp_file_name = os.path.split(path)
file_name, extension = os.path.split(temp_file_name)
t = th.Thread(target=remove_bg(path), name='remove_bg')
t.start()
# remove_bg(path)
res_path_list.append(path)
res_path = ' '.join(res_path_list)
messagebox.showinfo('提示', f'图片处理完成,路径为:{res_path}')
if __name__ == '__main__':
# 创建窗口
win = Tk()
GUI(win)
win.mainloop()
至此整个功能完成。还可以使用pyinstaller将程序打包成exe文件使用。