likes
comments
collection
share

分享一个抠图去背景的python库

作者站长头像
站长
· 阅读数 25

最近制作图片处理工具需要抠图,在github上找了好久,发现 rembg 这个python库,一个仅有百多兆大的小模型。经过测试发现效果还是比较不错的,使用默认的模型,对人物肖像进行抠图去背景,能精细到发丝。

先来张效果图

分享一个抠图去背景的python库

Github仓库地址

github.com/danielgatis/rembg

安装需求

python: >3.7, <3.13

使用CPU支持,使用以下方式安装

pip install rembg # for library
pip install rembg[cli] # for library + cli

如果是使用GPU支持,首先需要检查系统是否支持 onnxruntime-gpu 访问 onnxruntime.ai ,查看系统支持的环境,然后再进行安装

pip install rembg[gpu] # for library
pip install rembg[gpu,cli] # for library + cli

上述命令执行完毕后,还需要下载一个模型文件,模型下载后,需要将模型保存在当前计算机用户目录中 .u2net目录。

例如我当前使用的win系统

分享一个抠图去背景的python库

可用的模型有这些

  • u2net:通用预训练模型。
  • u2netp:u2net模型的轻量级版本
  • u2net_human_seg:预训练人体分割模型
  • u2net_cloth_seg:预训练人物肖像布料模型。衣服分为三类:上身、下身和全身
  • silueta:与u2net相同,但大小减少到43Mb
  • isnet-general-use:新通用预训练模型
  • isnet anime:动漫人物高精度分割模型
  • sam:预训练模型

安装步骤完成后,您就可以以命令行的方式使用 rembg 了。

rembg 命令有4个子命令,每种输入类型对应一个子命令:

  • i 用于文件
  • p 表示文件夹
  • s 表示http服务器
  • b 用于RGB24像素二进制流

您可以通过以下方式获得有关主命令的帮助:

rembg --help

或者查看子命令

rembg <COMMAND> --help

rembg i

处理单个文件

远程图片移除背景

curl -s https://www.idcd.com/static/img/8212.jpg | rembg i > output.png

本地图片移除背景

rembg i path/to/input.png path/to/output.png

指定使用一个模型去背景

rembg i -m u2netp path/to/input.png path/to/output.png

移除背景返回mask

rembg i -om path/to/input.png path/to/output.png

应用 alpha matting (前后景分割算法)

rembg i -a path/to/input.png path/to/output.png

传递参数

SAM example

rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] }' examples/plants-1.jpg examples/plants-1.out.png
自定义模型 example

rembg i -m u2net_custom -x '{"model_path": "~/.u2net/u2net.onnx"}' path/to/input.png path/to/output.png

rembg p

处理整个文件夹中的文件

移除文件夹中所有图片的背景

rembg p path/to/input path/to/output

处理文件的同时会监听文件夹的图片变动

rembg p -w path/to/input path/to/output

rembg s 和 rembg b 感兴趣的可以去看下。

除了以上命令行方式,还可以使用 python 库方式调用

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)

我使用这个库做了个抠图小工具,可以在线体验下。 www.idcd.com/tool/image/…

转载自:https://juejin.cn/post/7387731346733744143
评论
请登录