探索rembg开源库,三行代码轻松去除图片背景
开源库rembg,让你轻松实现去除图片背景的效果。
效果展示
原图 | 去除背景之后 |
---|---|
![]() | ![]() |
核心代码
input = Image.open(input_path) # 打开原图
output = remove(input) # 去除背景
output.save(output_path) # 保存图片
环境准备
需要 python
版本 >3.7, <3.12
安装依赖,同时支持源码调用和命令行调用,使用时按需求安装
CPU 版本
pip install rembg # 编码使用
pip install rembg[cli] # 编码+命令行
GPU版本
pip install rembg[gpu] # 编码使用
pip install rembg[gpu,cli] # 编码+命令行
第一次运行会先下载预训练的模型,下面有模型的下载地址
命令行模式
去除背景
rembg i path/to/input.png path/to/output.png
用指定模型
rembg i -m u2netp path/to/input.png path/to/output.png
只保留蒙版效果
rembg i -om path/to/input.png path/to/output.png
只保留蒙版效果
批量处理
rembg p path/to/input path/to/output
服务器模式
会启用一个服务,然后前端可以通过接口访问,默认的接口地址 http://localhost:5000/api
rembg s
运行效果
UI效果 | API地址 |
---|---|
![]() | ![]() |
代码调用
一般调用
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
input = i.read()
output = remove(input)
o.write(output)
使用 PIL
打开图片
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
使用 opencv
打开图片
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2.imread(input_path)
output = remove(input)
cv2.imwrite(output_path, output)
使用指定的模型
from rembg import new_session, remove
image = Image.open('./examples/car-1.jpg')
model = 'u2net_human_seg' # 指定模型类型
output = remove(image, session=new_session(model))
output.save('./output/car-3.png')
分割保留人物效果,模型 u2net_human_seg
原图 | 去除背景并分割人物 |
---|---|
![]() | ![]() |
其他高级模式请自行探索 源码地址 rembg
预训练模型
第一次运行会先下载预训练的模型,默认从 github
下载,在国内可能无法从 github
下载,这里提供一个 网盘的下载地址 模型-国内网盘下载,下载之后放在 C:\Users\用户名\.u2net\
目录下
这些不需要全部下载,可以只下载其中一个,默认需要的模型是 u2net
,其他的模型根据需求有选择的下载
可以使用的模型有
- u2net (download, source): 通用预训练模型
- u2netp (download, source): u2net的轻量版
- u2net_human_seg (download, source): 预训练的人物分割模型
- u2net_cloth_seg (download, source): 预训练的衣服的分割模型,会分割 上半身,下半身和全身
- silueta (download, source): 和 u2net 模型一样只不过大小只有 43MB
- isnet-general-use (download, source): 预训练的通用模型
- isnet-anime (download, source): 动漫角色的高精度分割模型
- sam (download encoder, download decoder, source): 预训练的通用模型
欢迎私信交流
转载自:https://juejin.cn/post/7250291603814694970