Око Саурона на OpenCV. Проект для Raspberry Pi

Заведи Raspberry Pi — http://amperka.ru/product/malina?utm_source=proj&utm_campaign=sayrons-eye&utm_medium=youtube
Cегодня видео о необычной картине. Это пейзаж Мордор, и в его центре живёт механический глаз Саурона. Он будет следить за любым, кто пройдёт мимо картины. Сделано это на OpenCV для Raspberry Pi.

Начну с самого сложного — картины. С Raspberry и OpenCV я работал и раньше, а вот с изобразительным искусство — не сложилось. Поэтому я скачал подходящую картинку из Инета, прошёлся парой фильтров в Photoshop и распечатал. Только не на бумаге, а на специальном холсте для плоттера. Полотно на 70 процентов состоит из хлопка, а на 30 из синтетики. Внешне ткань очень похожа на настоящую картину, но она прочнее холста и легче натягивается на подрамник.

Картинка получилась размером 120 на 85 сантиметров. Это чуть больше стандарта А0. Поэтому купить раму не составило труда — выбор готовых рам огромный. Я натянул холст на подрамник и закрепил его строительным степлером.

Всевидящее око сделаю из точечного светильника. Самый мощный, который я нашёл оказался со светодиодом на 3 Вт. Он дал чёткое белое пятно. Но у Саурона глаз был огненный! Если покрашу линзу или поставлю цветной фильтр, световой поток упадёт в разы — его не хватит для нужного эффекта.

Заменю белый светодиод жёлтым на 10Вт. Старому диоду хватало 600 мА, новому нужно в полтора раза больше. Поэтому выкину регулятор питания, а диод подключу через внешний адаптер Robiton.

Конструкция весит больше килограмма. Поэтому для вращения глазом использовал сервоприводы с металлическим редуктором — FS5109M. На 6В они выдают крутящий момент в 10 кг·см. Управляющая плата — Raspberry Pi 3B+. Подключю к ней сервы через Troyka Cap — это как Troyka Shield, только не под Ардуино, а для Распбери.

Подключу оригинальную камеру с сенсором Exmor от Сони. Можно было бы использовать обычную вебку, но тогда я потерял бы в скорости обработки видеопотока. USB-хост — ахилесова пята малинки. Мне нужны все ресурсы Расспбери, ведь движение буду отслеживать с помощью OpenCV.

OpenCV — это открытая библиотека алгоритмов компьютерного зрения. Она справляется с распознаванием символов и лиц, трекингом движущихся объектов и автоматической обработкой видеопотока. Версию библиотеки под Python легко установить из репозитория.

Я же пошёл путём настоящего самурая — скачал исходники и собрал OpenCV. Не всё прошло гладко, но зато я сформулировал четыре правила:
— для OpenCV не хватит карты на 8 Гб. Подойдёт microSD на 16 или 32 Гб;
— для сборки используйте только два ядра, иначе Raspberry рискует перегреться и зависнуть;
— отключите в конфиге компиляцию всех примеров. Это сэкономит кучу времени;
— не забудьте поставить GTK, пакет для работы с оконными интерфейсами.
Следуйте этим заповедям, и библиотека соберётся с первого раза, всего за пять-шесть часов.

Использую алгоритм поиска движения в кадре. Не буду лезть в сложную математику — достаточно что библиотека определяет движущийся объект и сообщает координаты его центра. Напишу несложный код на C++, который будет управлять сервами и наводить луч света по этим координатам.

Осталось решить последнюю проблему. Око должно оставлять чёткий луч света, прямо как в фильме. Вариант «поправить на посте» я не рассматриваю, поэтому подпущу дым. Помните как выглядит свет маяка в тумане? Попробую повторить этот эффект. Для этого у меня есть аж три ультрозвуковых увлажнителя. Их силёнок не хватило. Поэтому возьму профессиональную дым машину на 400 Вт. Залью в неё смесь глицерина, спирта и воды. И…

Let’s go party!

В проекте использованы:
• Raspberry Pi 3 B+ — http://amperka.ru/product/raspberry-pi-3-model-b-plus
• Troyka Cap — http://amperka.ru/product/raspberry-troyka-cap
• microSD-карта с ОС Raspbian — http://amperka.ru/product/raspbian-micro-sd-card
• Raspberry Pi Camera Board v2.1 — http://amperka.ru/product/raspberry-pi-camera-board-v2
• Сервопривод FS5109M — http://amperka.ru/product/servo-fs5109m?utm_source=proj&utm_campaign=sayrons-eye&utm_medium=youtube
• Импульсный блок питания (1000 мА) — http://amperka.ru/product/wall-plug-1a?utm_source=proj&utm_campaign=sayrons-eye&utm_medium=youtube

#проекты #amperka #raspberry #rpi3 #opencv