利用Python代码实现一键抠背景功能

前言

又是一个逛csdn发现的一个有趣的小项目,可以一键抠背景,需要用到removebg模块及其API,API可从其官网免费获取,网址如下https://www.remove.bg/zh

ps:加上/zh后,网页内容会显示中文

  1. 首先是安装removebg模块
  2. 然后就敲代码了,官方使用文档是个好东西,应该好好利用

有趣的是,意外发现了两种使用API的方法

1.用到爬虫的知识,利用requests模块,从网页上调用,直接实现抠背景

# Requires "requests" to be installed (see python-requests.org)
import requests

response = requests.post(
 'https://api.remove.bg/v1.0/removebg',
 files={'image_file': open('/path/to/file.jpg', 'rb')},
 data={'size': 'auto'},
 headers={'X-Api-Key': 'INSERT_YOUR_API_KEY_HERE'},
)
if response.status_code == requests.codes.ok:
 with open('no-bg.png', 'wb') as out:
 out.write(response.content)
else:
 print("Error:", response.status_code, response.text)

效果如下:

2.参照removebg库中的使用说明调用API,用相关代码实现抠背景

从gitub上下载removebg库源码时会有一个使用说明,即README.md,链接如下
https://github.com/brilam/remove-bg

上代码,这里就只展示处理单张图片的代码,批量处理图片以及根据url处理图片的相关代码均在README.md中有展示

from removebg import RemoveBg
# 抠单张图片
rmbg = RemoveBg("xxxxx", "error.log") # 引号内是你获取的API
rmbg.remove_background_from_img_file(r"C:\Users\Lenovo\PycharmProjects\爬虫\长颈鹿1.jpg",size='regular') # 图片地址

效果如下

from removebg import RemoveBg
# 抠单张图片
rmbg = RemoveBg("P3UCVZzKiUxW7BbkmcRYhgTB", "error.log") # 引号内是你获取的API
rmbg.remove_background_from_img_file(r"C:\Users\Lenovo\PycharmProjects\爬虫\长颈鹿1.jpg",size='regular',bg_color='e.g.red') # 图片地址

但奇怪的是加上填充纯色背景的属性bg_color='e.g.red'后会有这样的报错,尚未解决

后来使用了PIL库来实现背景的填充

from PIL import Image

# 加载已去背景的图像
im = Image.open('./pic/no-bg.png')
x, y = im.size

try:
 # 填充红色背景
 p = Image.new('RGBA', im.size, (255, 0, 0))
 p.paste(im, (0, 0, x, y), im) #paste的背景尺寸需与原图尺寸相同
 # 保存填充后的图片
 p.save('./pic/no-bg_red_bg.png')
 p.show() #显示处理后的图片
except:
 with open('./error1.log', 'a') as f:
 f.write('background change fail .')

效果如下

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • python xlwt如何设置单元格的自定义背景颜色

    问题 我使用python 2.7和xlwt模块进行excel导出 我想设置我知道可以使用的单元格的背景颜色 style1 = xlwt.easyxf('pattern: pattern solid, fore_colour red;') 但我想设置自定义颜色smth.比如#8a8eef或者是否有可能颜色的调色板,因为浅蓝色不起作用:) 解决方案 如果你没有使用easyxf()而是XFStyle逐步构建对象,这是使用用户友好颜色名称的另一种方法: import xlwt style = xlwt.

  • 基于OpenCV python3实现证件照换背景的方法

    简述 生活中经常要用到各种要求的证件照电子版,红底,蓝底,白底等,大部分情况我们只有其中一种,所以通过技术手段进行合成,用ps处理证件照,由于技术不到位,有瑕疵,所以想用python&openCV通过代码的方式实现背景颜色替换,加强一下对于openCV的学习,锻炼一下编码水平. 软件环境: python3.5 opencv2 windows 10 图像载入 导入opencv库,使用imread函数读取图片 import cv2 import numpy as np img=cv2.imread(

  • wxPython实现窗口用图片做背景

    本文实例为大家分享了wxPython实现窗口用图片做背景的具体代码,供大家参考,具体内容如下 效果图: 实现代码: #!/usr/bin/env python # -*- encoding:utf-8 -*- import wx class MyPanel(wx.Panel): def __init__(self, parent, id): wx.Panel.__init__(self, parent, id) try: image_file = 'image.jpg' to_bmp_image

  • Python的matplotlib绘图如何修改背景颜色的实现

    在主图中背景颜色不知道怎么改,plt.plot()中没有axisbg参数. 但是子图可以对plt.subplot的参数做修改,下面是对子图的背景颜色修改代码 import matplotlib.pyplot as plt import numpy as np # Fixing random state for reproducibility np.random.seed(19680801) dt = 0.01 t = np.arange(0, 30, dt) nse1 = np.random.r

  • python通过pil为png图片填充上背景颜色的方法

    本文实例讲述了python通过pil为png图片填充上背景颜色的方法.分享给大家供大家参考.具体分析如下: png图片有些是没有背景颜色,如果希望以单色(比如白色)填充背景,可以使用下面的代码,这段代码将当前目录下的 jb51.net.png图片填充了白色背景. 使用指定的颜色的背景色即可,然后把该图片用alpha通道填充到该单色背景上.  比如下面使用白色背景: im = Image.open('jb51.net.png') x,y = im.size try: # 使用白色来填充背景 fro

  • python之pyqt5通过按钮改变Label的背景颜色方法

    使用setStyleSheet方法修改得到自己想要的字体,大小,颜色 self.lab = QLabel("标签字体大小颜色", self) self.lab.setGeometry(50,50,300,200) self.setStyleSheet("QLabel{color:rgb(225,22,173,255);font-size:50px;font-weight:normal;font-family:Arial;}") color:rgb()中的四个参数,前

  • python IDLE 背景以及字体大小的修改方法

    为了保护眼睛,决定把白色背景换掉: 1 首先,在已经下载好的python文件目录下,找到config-highlight.def文件,我的是在H:\python\python3**\Lib\idlelib**文件夹下. 2.打开文件后,你会看到一些默认的颜色配置,比如经典的颜色配置就是白色背景,一般这个文件中会有两种配置可供选择: [IDLE Classic]和 [IDLE New],表现在IDLE界面上就是在python shell下,选择options-configure IDLE--hig

  • python实现抠图给证件照换背景源码

    本文实例为大家分享了python实现抠图给证件照换背景的具体代码,供大家参考,具体内容如下 import cv2 import numpy as np import matplotlib.pyplot as plt #建立显示图片的函数 def show(image): plt.imshow(image) plt.axis('off') plt.show() #导入前景图 img=cv2.imread('font.jpg') #图片导入 img = cv2.cvtColor(img,cv2.CO

  • python3基于OpenCV实现证件照背景替换

    本文实例为大家分享了python3实现证件照背景替换的具体代码,供大家参考,具体内容如下 import cv2 import numpy as np img=cv2.imread('zjz.jpg') #缩放 rows,cols,channels = img.shape img=cv2.resize(img,None,fx=0.5,fy=0.5) rows,cols,channels = img.shape cv2.imshow('img',img) #转换hsv hsv=cv2.cvtColo

  • Python利用matplotlib生成图片背景及图例透明的效果

    前言 最近工作中遇到一个需求,在使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,通过查找相关资料找到了大概的设置方法,特此记录,方便自己或者有需要的朋友们参考学习. 示例代码 # coding=utf-8 # matplotlib背景透明示例图 # python 3.5 import numpy as np import matplotlib.pyplot as plt from pylab import mpl import scipy.stats as stats

随机推荐