Вопрос или проблема
Существуют ли альтернативы Ubuntu для photoscissors, которая позволяет легко удалять фон изображения?
В настоящее время я использую GIMP различными способами для выполнения той же задачи, но для некоторых изображений это занимает много времени.
Пакет imagemagick включает команду convert
.
Примеры команд:
convert image1.jpg -fuzz 20%% -transparent White image2.png
convert image1.png -threshold 10%% image2.png
Обе команды представляют собой простые варианты удаления фона и могут сделать все остальные участки фона белыми в изображении прозрачными (параметры fuzzy/threshold могут настроить это).
Но Imagemagick имеет примеры удаления фонов с помощью масок.
То, что работает лучше всего, зависит от оригинала. JPG имеет тенденцию быть размытыми (то, что выглядит как один и тот же цвет, зачастую немного различается по цвету), поэтому результаты могут быть смешанными.
pip install --upgrade pip
pip install backgroundremover
Затем просто
backgroundremover -i "/path/to/file.jpg" -o "out.png"
и если вы хотите удалить фон из видео
backgroundremover -i "/path/to/video.mp4" -tg -o "output.gif"
источник: https://github.com/nadermx/backgroundremover
Пример до и после:
rembg
https://github.com/danielgatis/rembg
Еще одна альтернатива backgroundremover, ранее упомянутая его автором nadermx
Установка:
pipx install "rembg[cpu,cli]"
Давайте немного погнем:
wget -O in.jpg https://github.com/cirosantilli/media/blob/master/Ciro_Santilli_with_his_Stack_Overflow_100k_reputation_cup.jpg
time rembg i in.jpg out.jpg
Предварительный просмотр входных данных:
При первом запуске он загружает модель:
Downloading data from 'https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx' to file '/home/ciro/.u2net/u2net.onnx'.
так что мы понимаем, что он загружал модель u2net. Как я упоминал в этом другом ответе, это та же модель, которая используется backgroundremover.
Повторные запуски завершаются за 3.8 секунды:
real 0m3.823s
user 0m7.658s
sys 0m0.880s
выводит результат:
Так что это нормально, но не идеально. Моя рука наполовину исчезла, и есть несколько пустых мест прямо посередине чашки. Остальное в порядке. С волосами сложно, но я справляюсь.
Проверено на Ubuntu 24.04, rembg 2.0.61, Lenovo ThinkPad P14s amd.
Это зависит от того, какую часть изображения вы хотите сохранить. Это сложно с фотографиями пейзажей/объектов и т.д. с множеством вещей на фоне и гораздо проще с текстом.
Кроме того, что упомянули другие, другой метод простого удаления фона — это импортировать изображение в Inkscape и использовать инструмент трассировки битмап-карт.
Поиграйтесь с настройками и так далее, и вы сможете получить ту часть изображения, которую хотите, без фона. На самом деле, вам следует проверить опцию удаления фона
Ответ или решение
Удаление фона из изображений — задача, с которой сталкиваются как профессионалы, так и любители. Для пользователей Ubuntu, которые ищут эффективные альтернативы PhotoScissors, существует множество программных решений, позволяющих автоматизировать этот процесс. В этом ответе мы рассмотрим несколько доступных утилит и методов, которые помогут вам удалить фон из изображений.
1. ImageMagick
ImageMagick — мощный инструмент для обработки изображений, который предоставляет множество функций, включая возможность удаления фона. Для установки ImageMagick используйте следующую команду:
sudo apt-get install imagemagick
Примеры команд для выполнения удаления фона:
convert image1.jpg -fuzz 20% -transparent White image2.png
convert image1.png -threshold 10% image2.png
Первый пример позволяет сделать белый цвет прозрачным. Параметр -fuzz
помогает корректировать уровень допуска в схожести цветов, что актуально для изображений в формате JPG, где часто наблюдаются слегка отличающиеся оттенки. Важно помнить, что результаты могут варьироваться в зависимости от сложности изображения и контраста между объектом и фоном.
Дополнительно ImageMagick поддерживает использование масок для более точного удаления фона, что описано в документации.
2. backgroundremover
backgroundremover — это Python-пакет, который предоставляет удобный способ удаления фонов и может использоваться не только для изображений, но и для видео. Для установки выполните следующие команды:
pip install --upgrade pip
pip install backgroundremover
Использование пакета для удаления фона из изображения:
backgroundremover -i "/path/to/file.jpg" -o "out.png"
Для обработки видео:
backgroundremover -i "/path/to/video.mp4" -tg -o "output.gif"
Эта утилита хорошо справляется с сложными изображениями, благодаря встроенной модели, загружаемой при первом запуске.
3. rembg
rembg является еще одной альтернативой, которая также использует современные нейросетевые технологии для удаления фона. Установить его можно с помощью:
pipx install "rembg[cpu,cli]"
Пример использования:
wget -O in.jpg https://example.com/image.jpg
time rembg i in.jpg out.jpg
Первая инструкция загрузит модель, которая затем будет использоваться для удаления фона. Эффективность также зависит от сложности изображения, но результаты часто оказываются превосходными. Важно отметить, что обработка может занять некоторое время, особенно для больших файлов.
4. Inkscape
Если вам нужно удалить фон из векторного графического изображения, то Inkscape может стать хорошим решением. С помощью функции “Trace Bitmap” вы сможете создать векторную версию вашего изображения и удалить ненужный фон. Установка Inkscape осуществляется через команду:
sudo apt-get install inkscape
Вот шаги, которые вы можете предпринять для удаления фона:
- Импортируйте изображение в Inkscape.
- Выберите ваше изображение и используйте опцию "Trace Bitmap".
- Настройте параметры трассировки, чтобы выделить нужную часть изображения и удалить фон.
Заключение
Учитывая все вышеперечисленное, вы имеете множество возможностей для автоматическoгo удаления фона из изображений на Ubuntu. Выбор метода зависит от ваших конкретных потребностей — будь то простота использования, качество обработки или требования к формату. Исследуйте каждый из предложенных инструментов и выберите наиболее подходящий для вашего проекта.