赞
踩
很多时候,我们需要抠出照片中的人物时,第一想法就是万能PS,用套索抠图。
但是往往会出错,并且让人眼花缭乱。
在这里,给大家演示一番,用python代码来自动抠图。
在这里就不得不介绍一个网站了(remove.bg),绝对的5s级抠图神器。
客户端每月可以免费处理 50 张图片,并且可以通过API上传图片。
还是老样子,先给大家上个图。(图是百度上抠下来的)
抠图前:
抠图后:
不能不说,这效果能够比得上多年ps老司机了!
首先,我们需要获取一个属于自己的API------>点击这里,手把手教你如何获取API
获得API后,还是老样子,我们先用tkinter布局
这界面可能不太符合正常人的审美。。。。
其实,实现自动抠图只需要三行代码。
我们只不过是使用removebg实现了抠图功能,但真正如何抠图的过程全是由removebg操作的。
from removebg import RemoveBg
rmbg = RemoveBg("此处填写获取的API", "error.log") # 引号内是你获取的API
rmbg.remove_background_from_img_file("此处填写需上传图片的路径") # 图片地址
通过这三行代码,我们可以通过API上传图片,让removebg网站帮我们自动抠图,并保存。
**注:**保存的已抠图图片会保存在所上传图片的目录下
(本来想尝试下改变保存路径的,但一直没找到方法)
# coding=utf-8 from tkinter import * from tkinter.filedialog import askopenfilenames import tkinter.filedialog import tkinter.messagebox from removebg import RemoveBg root = Tk() root.title("去除图中人物背景") root.geometry("400x500") root.resizable(0,0) frame1 = Frame(root) frame2 = Frame(root) frame1.pack() frame2.pack() read_var = StringVar() IMGPATH = "" def get_image(): global IMGPATH filenames = askopenfilenames(filetypes = (("jpg img","*.jpg"),("pgn img","*.pgn"),("gif img","*.gif"))) if len(filenames) > 0: fnlist = [fn for fn in filenames] fnstr = '\n'.join(fnlist) read_var.set(fnstr) IMGPATH = fnlist else: read_var.set("目前没有选择任何图片文件") def make_image(): global savepath global IMGPATH for imgpath in IMGPATH: produce_image(imgpath) tkinter.messagebox.showinfo(title = "OK",message = '完成生成') def produce_image(img_path): rmbg = RemoveBg("此处填写获取的API", "error.log") rmbg.remove_background_from_img_file(img_path) Label1 = Label(frame1,text = "文件路径:") Label1.grid(row = 0,column = 0,pady = 20) Label3 = Label(frame1,textvariable = read_var) Label3.grid(row = 0,column = 1) Button1 = Button(frame2,text = "选择文件",command = get_image,font = ("楷体",18)) Button3 = Button(frame2,text = "生成图片",command = make_image,font = ("楷体",18)) Button1.pack(pady = 20) Button3.pack(pady = 20) mainloop()
**注:**本代码中API需改为自己所注册的
以上代码均为私人所码,如有疑问,请留言。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。