当前位置:   article > 正文

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("此处填写需上传图片的路径")  # 图片地址
  • 1
  • 2
  • 3

通过这三行代码,我们可以通过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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

**注:**本代码中API需改为自己所注册的
以上代码均为私人所码,如有疑问,请留言。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/273875
推荐阅读
相关标签
  

闽ICP备14008679号