Python实现一键抠图:两种API调用方式与背景填充方案

Ivy
Ivy
发布时间:2026-10-13| 6人浏览过
原创

本文介绍利用Python实现一键抠除图片背景的方法。通过对比requests模块直接调用API与使用removebg库两种方式,展示代码实现细节。针对removebg库添加纯色背景参数报错的问题,提供使用PIL库手动填充背景色的解决方案,并附带完整代码示例与效果说明。

Python一键抠图实现方案

前言

在浏览技术社区时,发现一个实用的Python小项目,能够一键去除图片背景。该功能依赖于removebg模块及其提供的API接口。用户可访问removebg官网免费获取API Key,访问地址为https://www.remove.bg/zh。

注意网址后缀加上/zh后,网页内容会显示中文

  1. 首先需要安装removebg模块。
  2. 随后即可开始编写代码。官方提供的文档是非常好的参考资料,建议仔细阅读并充分利用。

两种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抠图及背景处理的内容对大家的学习或工作具有一定的参考价值,感谢支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。