Рубріки: Решения

Без фотошопа: как с помощью Python удалить фон изображения

Богдан Мирченко

Rembg — это инструмент Python для удаления фона изображений. Проект лежит на GitHub, имеет уже 1,3 тысячи звездочек, 250 форков и распространяется под лицензией MIT. 

Требования

  • Версия Python 3.8 и выше;
  • Стабильная версия torch/torchvision.

Как установить torch/torchvision

Перейдите по ссылке и пролистайте до раздела INSTALL PYTORCH и следуйте инструкциям. 

Например: 

PyTorch Build: Stable (1.7.1)
Your OS: Windows
Package: Pip
Language: Python
CUDA: None

Команда установки: 

pip install torch==1.7.1+cpu torchvision==0.8.2+cpu -f https://download.pytorch.org/whl/torch_stable.html

Установка

Установите инструмент из pypi.

pip install rembg

Использование в качестве CLI

Удаление фона с удаленного изображения.

curl -s http://input.png | rembg > output.png

Код для удаления фона из локального файла.

rembg -o path/to/output.png path/to/input.png

Код для удаления фона со всех изображений в папке. 

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

Добавление собственной модели

Скопируйте файл custom-model.pth file to ~/.u2net и запустите:

curl -s http://input.png | rembg -m custom-model > output.png

Использование в качестве сервера

Запустите сервер.

rembg-server

Откройте браузер. 

http://localhost:5000?url=http://image.png

Чтобы отправить файл как FormData (multipart/form-data):

<form action="http://localhost:5000" method="post" enctype="multipart/form-data">
   <input type="file" name="file"/>
   <input type="submit" value="upload"/>
</form>

Использование в качестве библиотеки

Пример 1: чтение из stdin и запись в stdout

В app.py.

import sys
from rembg.bg import remove

sys.stdout.buffer.write(remove(sys.stdin.buffer.read()))

Запускаем.

cat input.png | python app.py > out.png

Пример 2: использование Python Imaging Library

В app.py.

from rembg.bg import remove
import numpy as np
import io
from PIL import Image

input_path = 'input.png'
output_path = 'out.png'

f = np.fromfile(input_path)
result = remove(f)
img = Image.open(io.BytesIO(result)).convert("RGBA")
img.save(output_path)

Запускаем.

python app.py

Использование в качестве докера

Просто запускаем.

curl -s http://input.png | docker run -i -v ~/.u2net:/root/.u2net danielgatis/rembg:latest > output.png

Предварительное использование

Иногда можно добиться лучших результатов, включив альфа-матирование. Пример:

curl -s http://input.png | rembg -a -ae 15 > output.png

Удаление фона с альфа-матированием и без

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023