python removebg_Python——RemoveBg三行代码自动抠图

Python——RemoveBg三行代码自动抠图

前言

效果图

提前准备

正题

总代码

前言

很多时候,我们需要抠出照片中的人物时,第一想法就是万能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需改为自己所注册的

以上代码均为私人所码,如有疑问,请留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值