Создаем эффект змеиных глаз при помощи Python

автор

Snapchat, Instagram, а теперь и Apple практически одновременно выпустили видео-эффекты с наложением на лица в реальном времени.

В сегодняшней статье я мы попробуем создать метод для отслеживания и изменения нашего лица в реальном времени. Также, как это делают в перечисленных приложениях.

Инструменты для определения лиц в Python

Мы воспользуемся двумя самыми главными и удивительными библиотеками обработки изображений для Python 3: Dlib и OpenCV.

Установка Dlib – это достаточно просто, спасибо за доступность на большей части платформ.

Однако для OpenCV установка несколько сложнее. Если вы работаете в MacOS, в интернете легко можно найти информацию по установке OpenCV. Это касается и Ubuntu. Пользователи Windows могут воспользоваться неофициальным источником.

После установки OpenCV, можете расслабиться до конца статьи 😉

Архитектура Эффекта Линз

Мы используем OpenCV для получения необработанного стрима видео с веб-камеры. Далее, мы изменим размер этого стрима, при помощи специальной функции imutils, чтобы получить приличную частоту кадров для определения лиц.

После получения частоты кадров, мы конвертируем кадр видео веб-камеры в черно-белый, затем передадим его Dlib для определения лица.

get_frontal_face_detector возвращает набор ограненных прямоугольников для каждого обнаруженного лица на изображении. Таким образом мы можем использовать это как модель (в нашем случае, shape_predictor_68_face_landmarks на Github), и получить набор из 68-и точек с нашей лицевой ориентацией.

Из точек возле глаз мы можем сформировать полигон аналогичной формы в новом канале.

Таким образом, выполняем bitwise_and и копируем наши глаза из кадра.

Далее создаем объект для отслеживания n числа позиций, в которых были наши глаза. Функция OpenCV под названием boundingRect дает нам базовую координату x и y для рисования.

Наконец, мы создаем маску для воссоздания всех предыдущих местах, в которых были наши глаза, более того, bitwise_and копирует предыдущее изображение глаз в кадре перед показом.

Для запуска своих Python приложений вам нужно воспользоваться провайдером firstvds который предоставляет качественные сервера и быструю тех. поддержку. FirstVDS предоставляет отличные VPS для начинающих (от 90 руб в месяц) где вы сможете тестировать свои Python приложения на реальном сервере. Для более больших проектов, FirstVDS предоставляет выделенные сервера по лучшей цене на русском рынке.

Пишем Код!

Так как наша концепция предельно ясна, написание настоящего детектора и манипулятора для глаз будет проходить достаточно прямолинейно.

Запускаем код!

Для запуска этого кода, нам нужно скачать предсказатель dlib, работающий с 68-и точками. Мы можем скачать его, после чего извлечь в нашу папку, в которой хранится наша программа Python. Из нее мы можем выполнить следующее:

Мы должны сделать наш кадр движущимся. Здесь, нажав на клавишу “S» мы запускаем эффект змеиных глаз. Нажав “R”, мы записываем кадры на диск, для сохранения в качестве цельного видео в будущем. Если вы хотите сделать это, вам нужно для начала создать папку под названием image_seq в той же папке, в которой лежит ваша программа Python.

Пример работы

Исходный код на Github: https://github.com/burningion/snapchat-lens-effect-in-python

Вторая часть:

Подведем итоги

Если вам понравилась данная статья, и если вы охотитесь за годными и креативными статьями о программировании, вы в правильном месте! Буду благодарен, если вы разместите этот текст в соц.сетях.

Вам может быть интересно