Python实现一键抠图:两种API调用方式与背景填充方案
本文介绍利用Python实现一键抠除图片背景的方法。通过对比requests模块直接调用API与使用removebg库两种方式,展示代码实现细节。针对removebg库添加纯色背景参数报错的问题,提供使用PIL库手动填充背景色的解决方案,并附带完整代码示例与效果说明。
Python一键抠图实现方案
前言
在浏览技术社区时,发现一个实用的Python小项目,能够一键去除图片背景。该功能依赖于removebg模块及其提供的API接口。用户可访问removebg官网免费获取API Key,访问地址为https://www.remove.bg/zh。
注意网址后缀加上/zh后,网页内容会显示中文
- 首先需要安装removebg模块。
- 随后即可开始编写代码。官方提供的文档是非常好的参考资料,建议仔细阅读并充分利用。
两种API调用方法对比
在实践过程中,意外发现了两种调用API实现抠图的方法。
第一种方法结合了爬虫知识,利用requests模块直接发起请求调用API,从而直接实现背景去除。
# 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)
具体效果如下所示。


第二种方法是参考removebg库中的使用说明来调用API,通过编写相关代码实现背景去除功能。
从GitHub下载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参数(如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 .')
使用PIL库填充背景后的效果如下所示。

总结
以上就是本文的全部内容,希望这些关于Python抠图及背景处理的内容对大家的学习或工作具有一定的参考价值,感谢支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









