Caire — это библиотека для изменения размера изображений с учётом содержимого, основанная на статье «Seam Carving for Content-Aware Image Resizing» («Сшивание для изменения размера изображения с учётом его содержания»).
Исходное изображение | Энергетическая карта | Применённые швы |
---|---|---|
![]() |
![]() |
![]() |
Ключевые особенности, которые отличают эту библиотеку от других существующих решений с открытым исходным кодом:
stdin
и stdout
Сначала установите Go, задайте свой GOPATH
и убедитесь, что $GOPATH/bin
находится в вашем PATH
.
$ go install github.com/esimov/caire/cmd/caire@latest
Библиотеку также можно установить через Homebrew.
$ brew install caire
$ caire -in input.jpg -out output.jpg
$ caire --help
Поддерживаются следующие флаги:
Флаг | По умолчанию | Описание |
---|---|---|
in |
- | Входной файл |
out |
- | Вывод ## Обнаружение лиц |
Библиотека способна обнаруживать лица людей перед изменением размера изображений с помощью облегчённой библиотеки обнаружения лиц Pigo (https://github.com/esimov/pigo).
На приведённом ниже изображении показаны возможности приложения для обнаружения человеческих лиц перед изменением размера. Хорошо видно, что при включённом обнаружении лиц алгоритм избегает обрезки пикселей внутри обнаруженных лиц, сохраняя зону лица неизменной.
Исходное изображение | С обнаружением лиц | Без обнаружения лиц |
---|---|---|
![]() |
![]() |
![]() |
В библиотеку также встроен режим предварительного просмотра графического интерфейса для визуализации процесса обработки в реальном времени. Библиотека графического интерфейса Gio (http://gioui.org/) была использована из-за её надёжности и современной архитектуры. Перед запуском убедитесь, что вы установили все необходимые зависимости, указанные в разделе установки (https://gioui.org/#installation).
Окно предварительного просмотра активировано по умолчанию, но вы можете отключить его в любое время, установив флаг -preview в значение false. Когда изображения обрабатываются одновременно из каталога, режим предварительного просмотра отключается.
Чтобы обнаружить лица перед масштабированием, используйте флаг -face. Нет необходимости предоставлять файл классификации лиц, так как он уже встроен в сгенерированный двоичный файл. Приведённый ниже пример кода изменит размер предоставленного изображения на 20%, но проверит наличие человеческих лиц, чтобы избежать деформации лица.
Для получения информации о настройках, связанных с обнаружением лиц, обратитесь к документации Pigo (https://github.com/esimov/pigo/blob/master/README.md).
$ caire -in input.jpg -out output.jpg -face=1 -perc=1 -width=20
stdin
и stdout
с конвейеромВы также можете использовать stdin
и stdout
с -
:
$ cat input/source.jpg | caire -in - -out - >out.jpg
in
и out
по умолчанию равны -
, поэтому вы также можете использовать:
$ cat input/source.jpg | caire >out.jpg
$ caire -out out.jpg < input/source.jpg
Вы можете также указать URL-адрес изображения для флага -in или даже использовать curl или wget в качестве команды конвейера, в этом случае нет необходимости использовать флаг -in.
$ caire -in <image_url> -out <output-folder>
$ curl -s <image_url> | caire > out.jpg
Библиотека также может обрабатывать несколько изображений из папки одновременно. Вам нужно указать только исходную и целевую папки и новую ширину или высоту в этом случае.
$ caire -in <input_folder> -out <output-folder>
Нет необходимости определять тип выходного файла, просто используйте правильное расширение, и библиотека закодирует изображение в этот конкретный тип. Вы можете экспортировать изменённое изображение даже в файл Gif, в этом случае сгенерированный файл показывает Процесс изменения размера интерактивно.
Если вы хотите уменьшить размер изображения на определённый процент, можно использовать логический флаг -perc
. В этом случае значения, указанные для width
и height
, выражаются в процентах, а не в пикселях. Например, чтобы уменьшить размеры изображения по горизонтали и вертикали на 20%, можно использовать следующую команду:
$ caire -in input/source.jpg -out ./out.jpg -perc=1 -width=20 -height=20 -debug=false
Также библиотека поддерживает опцию -square
. При её использовании изображение будет изменено до квадратного формата на основе самого короткого края.
Когда изображение изменяется по осям X и Y, алгоритм сначала пытается изменить его масштаб, но также сохраняет соотношение сторон. Алгоритм вырезания шва применяется только к оставшимся точкам. Например: если у нас есть изображение размером 2048x1536 и мы хотим изменить его размер до 1024x500, инструмент сначала изменит размер изображения до 1024x768, а затем удалит только оставшиеся 268 пикселей.
-mask
: путь к защитной маске. Маска должна быть в двоичном формате и иметь тот же размер, что и входное изображение. Белые области представляют собой области, где швы вырезать не следует.-rmask
: путь к маске удаления. Маска должна быть в двоичном формате и иметь такой же размер, как и входное изображение. Белые области обозначают области для удаления.Маска | Маска удаления |
---|---|
snap
(https://snapcraft.io/caire): $ snap run caire --h
Оригинал | Уменьшенное |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Оригинал | Увеличенное |
---|---|
![]() |
![]() |
![]() |
![]() |
Copyright © 2018 Endre Simo
Этот проект является Под лицензией MIT. Смотрите файл LICENSE для полного текста лицензии.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )