Spec-Zone.ru › Wagtail 2

Обнаружение особенностей

Wagtail умеет автоматически обнаруживать лица и особенности на ваших изображениях и обрезать изображения по этим особенностям.

Обнаружение особенностей использует сторонние инструменты для обнаружения лиц/особенностей на изображении при загрузке изображения. Обнаруженные особенности сохраняются внутри как фокусная точка в focal_point_{x, y, width, height} полях модели Image. Эти поля используются фильтром изображений fill при отображении изображения в шаблоне для обрезки изображения.

Установка

Два сторонних инструмента известны своей работой с Wagtail: один, основанный на OpenCV для общего обнаружения особенностей, и один, основанный на Rustface для обнаружения лиц.

OpenCV на Debian/Ubuntu

Для обнаружения особенностей требуется OpenCV, что может быть немного сложным, так как в настоящее время он не устанавливается через pip.

Существует несколько способов установки этих компонентов, но в каждом случае вам необходимо проверить, что и сам OpenCV, и интерфейс Python были правильно установлены.

Установить opencv-python

opencv-python доступен в PyPI. Он включает в себя интерфейс Python для OpenCV, а также собственно статически скомпилированные двоичные файлы OpenCV.

Для установки:

$ pip install opencv-python

В зависимости от того, что еще установлено на вашей системе, этого может быть достаточно. На более легких системах Linux вам может потребоваться определить и установить недостающие системные библиотеки (например, в сокращенной версии Debian Stretch необходимо установить libsm6 libxrender1 libxext6 вместе с apt).

Установить пакет системного уровня

Пакет системного уровня может позаботиться обо всех необходимых компонентах. Проверьте, что доступно для вашей операционной системы. Например, python-opencv доступен для Debian; он устанавливает сам OpenCV и настраивает привязки к Python.

Однако он может делать неверные предположения о том, как вы используете Python (например, какую версию вы используете) - протестируйте как описано ниже.

Тестирование установки

Проверьте установку:

python3
>>> import cv2

Ошибка, например:

ImportError: libSM.so.6: cannot open shared object file: No such file or directory

указывает, что необходимая системная библиотека (в данном случае libsm6) не была установлена.

С другой стороны,

ModuleNotFoundError: No module named 'cv2'

означает, что компоненты Python не были правильно настроены в вашей среде Python.

Если у вас не возникло ошибки импорта, установка, вероятно, прошла успешно.

Rustface

Rustface — это библиотека Python с предварительно скомпилированными файлами wheel, предоставленными для Linux и macOS. Несмотря на реализацию на Rust, она устанавливается через pip:

$ pip install wheel
$ pip install rustface

Регистрация в Willow

Rustface предоставляет плагин, который необходимо зарегистрировать в Willow.

Это следует сделать где-то, что запускается при запуске приложения:

from willow.registry import registry
import rustface.willow

registry.register_plugin(rustface.willow)

Например, в AppConfig.ready приложения.

Обрезка

Алгоритм обнаружения лиц создаёт фокусированную область, которая обрезается непосредственно вокруг лица, а не по всему лицу.

В случае изображений с одним лицом это может быть приемлемо в некоторых случаях, например, для миниатюр, но может быть излишне обрезано для «портретов». Отображения изображений могут охватывать большую часть лица, уменьшая процент обрезки (-c<percentage>) в конце правила изменения размера до 0%:

{% image page.photo fill-200x200-c0 %}

Включение обнаружения особенностей в Wagtail

После установки, необходимо установить значение WAGTAILIMAGES_FEATURE_DETECTION_ENABLED в True, чтобы автоматически обнаруживать лица/особенности при каждой новой загрузке изображения в Wagtail или при сохранении изображения без фокусной точки (это делается с помощью обработчика сигнала предварительного сохранения):

# settings.py

WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = True

Ручное выполнение обнаружения особенностей

Если у вас уже есть изображения на вашем сайте Wagtail и вы хотите выполнить обнаружение особенностей на них, или вы хотите выборочно применять обнаружение особенностей, когда WAGTAILIMAGES_FEATURE_DETECTION_ENABLED установлено в False, вы можете запустить его вручную, используя метод get_suggested_focal_point() на модели Image.

Например, вы можете запустить обнаружение особенностей на всех изображениях, выполнив следующий код в командной строке Python:

from wagtail.images import get_image_model

Image = get_image_model()

for image in Image.objects.all():
    if not image.has_focal_point():
        image.set_focal_point(image.get_suggested_focal_point())
        image.save()
  • Предыдущая Изменение представления форматированного текста
  • Следующая Динамический вид представления изображения

Содержание страницы

  • Обнаружение особенностей
    • Установка
      • OpenCV на Debian/Ubuntu
        • Установить opencv-python
        • Установить пакет системного уровня
        • Тестирование установки
      • Rustface
        • Регистрация в Willow
    • Обрезка
    • Включение обнаружения особенностей в Wagtail
    • Ручное выполнение обнаружения особенностей

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/advanced_topics/images/feature_detection.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API