Оглавление:
- Шаг 1. Основная идея и необходимые детали
- Шаг 2: Установите модуль OpenCV
- Шаг 3. Печать крепления камеры
- Шаг 4: Завершение монтажа камеры
- Шаг 5: обученная модель машинного обучения
- Шаг 6: Код, благодаря которому все происходит
- Шаг 7: механизм открывания коробки
- Шаг 8: создание коробки с тематикой Гарри Поттера
Видео: Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения: 8 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
«Любая достаточно продвинутая технология неотличима от магии» - Артур Кларк
Несколько месяцев назад мой брат посетил Японию и получил настоящий волшебный опыт в Волшебном мире Гарри Поттера в Universal Studios, что стало возможным благодаря технологии компьютерного зрения.
В «Волшебном мире Гарри Поттера» в Universal Studios туристы могут творить «настоящую магию» в определенных местах (где установлена система захвата движения), используя специально сделанные палочки со светоотражающими бусинами на конце. Палочки можно купить в настоящей лавке Олливандера, они точно такие же, как те, что показаны в фильмах о Гарри Поттере, но помните: «Это палочка выбирает волшебника»: P
В этих определенных местах, если человек выполняет определенный жест с палочкой, система захвата движения распознает этот жест, и все жесты соответствуют определенному заклинанию, которое вызывает определенные действия в окружающей области, такие как включение фонтана и т. Д.
Итак, в этом руководстве я покажу, как вы можете создать дешевую и эффективную систему захвата движения дома, чтобы творить «настоящую магию», открыв коробку одним движением палочки: D, используя обычную камеру ночного видения, немного электроники, и некоторый код Python с использованием библиотеки компьютерного зрения OpenCV и машинного обучения !!!
Шаг 1. Основная идея и необходимые детали
Жезлы, купленные в Волшебном мире Гарри Поттера в Universal Studios, имеют на конце световозвращающую бусинку. Эти световозвращающие бусины отражают большое количество инфракрасного света, который излучается камерой в системе захвата движения, и система захвата движения воспринимает то, что мы, люди, воспринимаем как не очень характерный кончик жезла, движущегося в воздухе. в виде яркой капли, которую можно легко изолировать в видеопотоке и отслеживать, чтобы распознать рисунок, нарисованный человеком, и выполнить необходимое действие. Вся эта обработка происходит в режиме реального времени с использованием компьютерного зрения и машинного обучения.
Простую камеру ночного видения можно использовать в качестве нашей камеры для захвата движения, поскольку они также излучают инфракрасный свет, который не виден людям, но может быть четко виден с помощью камеры без инфракрасного фильтра. Таким образом, видеопоток с камеры подается на Raspberry Pi, в котором есть программа Python, работающая под управлением OpenCV, которая используется для обнаружения, изоляции и отслеживания кончика палочки. Затем мы используем алгоритм машинного обучения SVM (Simple Vector Machine) для распознавания нарисованного шаблона и, соответственно, управления GPIO Raspberry Pi для выполнения некоторых действий.
Необходимые материалы:
1) Raspberry Pi 3 модель B и необходимые аксессуары, такие как клавиатура и мышь.
2) Модуль камеры Raspberry Pi NoIR (без инфракрасного порта)
3) Палочка Гарри Поттера со световозвращателем на конце: не волнуйтесь, если у вас его нет. Можно использовать все, что оснащено световозвращателем. Итак, вы можете использовать любую палочку, похожую на палочку, и нанести на ее кончик световозвращающую ленту, краску или бусинки, и все должно работать, как показано в видео Уильяма Османа: Смотреть видео
4) 10 инфракрасных светодиодов
5) 3D-принтер и PLA-нить по вашему выбору
6) Настенный адаптер 12 В - 1 А и разъем постоянного тока
7) Серводвигатель
8) Старая коробка и спица от колеса велосипеда
9) Горячий клеевой пистолет
10) Распечатки некоторых логотипов и изображений, связанных с Гарри Поттером, на глянцевом листе бумаги.
11) Зеленые и желтые бархатные простыни.
ПРИМЕЧАНИЕ. Я также пытался использовать старую обычную веб-камеру для ночного видения, удалив ее инфракрасный фильтр, но в итоге повредил / сместил ее линзу, что сильно повлияло на качество видео, и я не мог ее использовать. Но если вы хотите попробовать, вы можете пройти через это отличное руководство. Нажмите здесь.
Шаг 2: Установите модуль OpenCV
Теперь пришло время для первого и, вероятно, самого длинного шага всего этого проекта: установка и сборка модуля OpenCV в вашем Raspberry Pi.
Установка зависимостей для модуля OpenCV не занимает много времени, но процесс сборки может занять от 2 до 3 часов !! Итак, пристегнитесь !!:П
В Интернете есть множество руководств, которым вы можете следовать, чтобы установить модуль OpenCV 4.1.0. Вот ссылка на ту, по которой я перешел: Нажмите здесь
ПРИМЕЧАНИЕ. Я настоятельно рекомендую установить модуль OpenCV в виртуальной среде, как показано в руководстве, поскольку это предотвратит различные конфликты, которые могут возникнуть из-за установки зависимостей разных модулей или при работе с разными версиями python.
Шаг 3. Печать крепления камеры
Пикамера NoIR не имеет инфракрасного фильтра, поэтому может использоваться как камера ночного видения, но в ней по-прежнему отсутствует источник инфракрасного света. Все камеры ночного видения имеют собственный источник инфракрасного света, который излучает в темноте инфракрасные лучи, невидимые невооруженным глазом, но лучи могут быть видны камерой без инфракрасного фильтра после отражения от любого объекта.
Итак, нам в основном нужен инфракрасный источник света и что-то, на что можно установить камеру. Для этого я разработал простую 3D-модель объекта, на котором мы могли бы установить камеру, которую мы окружим 10 ИК-светодиодами по кругу. Модель была создана с помощью SketchUp и напечатана из черного PLA примерно за 40 минут.
Шаг 4: Завершение монтажа камеры
После распечатки модели я сначала отшлифовал ее наждачной бумагой с зернистостью 80, а затем начал вставлять ИК-светодиоды в их отверстия в соответствии со схемой, приведенной выше.
Я закрепил светодиоды на их месте с помощью небольшого количества горячего клея, а затем соединил положительный и отрицательный выводы двух последовательных светодиодов вместе, а затем спаял их, чтобы создать последовательное соединение светодиодов.
Положительный вывод одного светодиода и отрицательный вывод светодиода рядом с ним внизу были оставлены непаянными, чтобы подключить положительный и отрицательный концы 12-вольтного настенного адаптера.
Шаг 5: обученная модель машинного обучения
Чтобы распознать букву, нарисованную человеком, я обучил модель машинного обучения, основанную на алгоритме машины опорных векторов (SVM), используя набор данных рукописных английских алфавитов, который я нашел здесь. SVM - это очень эффективные алгоритмы машинного обучения, которые могут дать высокую точность, в данном случае около 99,2% !! Узнать больше о SVM
Набор данных имеет форму файла.csv, который содержит 785 столбцов и более 300000 строк, где каждая строка представляет изображение 28 x 28, а каждый столбец в этой строке содержит значение этого пикселя для этого изображения с дополнительным столбцом в начало, которое содержит метку, число от 0 до 25, каждое из которых соответствует английской букве. С помощью простого кода на Python я разрезал данные, чтобы получить все изображения только для двух букв (A и C), которые мне нужны, и обучил модель для них.
Я прикрепил обученную модель (алфавит_классификатор.pkl), а также обучающий код, не стесняйтесь проходить его или вносить какие-либо изменения для обучения модели с разными буквами или пробовать разные алгоритмы. После запуска программа автоматически сохраняет обученную модель в том же каталоге, где сохранен ваш код.
Шаг 6: Код, благодаря которому все происходит
После создания обученной модели последним шагом будет написание программы на Python для нашей Raspberry Pi, которая позволяет нам делать следующее:
- Доступ к видео из Picamera в режиме реального времени
- Обнаружение и отслеживание белых пятен (в данном случае кончика палочки, которая загорается в ночном видении) на видео.
- Начните отслеживать путь движущейся капли в видео после некоторого триггерного события (объяснено ниже).
- Остановить трассировку после другого триггерного события (объяснено ниже)
- Вернуть последний кадр с рисунком, нарисованным пользователем
- Выполните предварительную обработку кадра, такую как определение порога, удаление шума, изменение размера и т. Д.
- Используйте для прогноза обработанный последний кадр.
- Выполните какую-то магию, управляя GPIO Raspberry Pi в соответствии с предсказанием.
Для этого проекта я создал коробку в стиле Гарри Поттера, которую я могу открывать и закрывать с помощью серводвигателя, который управляется GPIO Raspberry Pi. Поскольку буква «А» означает «Алохамора» (одно из самых известных заклинаний из фильмов о Гарри Поттере, которое позволяет волшебнику открыть любой замок !!), если человек рисует букву А с помощью палочки, пи дает сервоприводу команду откройте Коробку. Если человек рисует букву «C», которая означает «закрыть» (поскольку я не мог придумать никакого подходящего заклинания, используемого для закрытия или запирания: P), «пи» приказывает сервоприводу закрыть коробку.
Вся работа, связанная с обработкой изображения / видео, такая как обнаружение blob, отслеживание пути к blob, предварительная обработка последнего кадра и т. Д., Выполняется через модуль OpenCV.
Для упомянутых выше триггерных событий на видео в реальном времени создаются два круга: зеленый и красный. Когда капля входит в область внутри зеленого круга, программа начинает отслеживать путь, пройденный каплей после этого момента, позволяя человеку начать создание буквы. Когда большой двоичный объект достигает красного круга, видео останавливается, и последний кадр передается функции, которая выполняет предварительную обработку кадра, чтобы подготовить его к предсказанию.
На этом этапе я прикрепил файлы кода. Не стесняйтесь проходить его и вносить любые изменения по своему усмотрению.
ПРИМЕЧАНИЕ: мне пришлось создать два отдельных файла python, работающих с разными версиями python, один из которых импортирует модуль OpenCV (Python 2.7), а другой импортирует модуль sklearn (Python 3.5) для прогнозирования после загрузки обученной модели, поскольку мой OpenCV был установлен для версия Python 2.7, в то время как sklearn был установлен для python 3.5. Итак, я использовал модуль подпроцесса для запуска файла HarryPotterWandsklearn.py (для прогнозирования) из HarryPotterWandcv.py (для всей работы opencv и видеозаписи в реальном времени) и получения его вывода. Таким образом, мне нужно только запустить файл HarryPotterWandcv.py.
Шаг 7: механизм открывания коробки
У меня была старая коробка красного цвета, которую я использовал для этого проекта.
Для механизма открывания ящика:
- Я приклеил сервопривод к заднему краю коробки на кусок картона у края коробки.
- Затем я взял спицу с колеса велосипеда и приклеил ее горячим клеем к рычагу сервопривода.
- Другой конец спицы был прикреплен к крышке ящика с помощью куска проволоки.
- Плюс сервопривода был подключен к + 5V Pin 2 на Raspberry Pi.
- Минус сервопривода был подключен к контакту 39 GND.
- Сигнал сервопривода был подключен к выводу 12.
Шаг 8: создание коробки с тематикой Гарри Поттера
Чтобы сделать коробку с тематикой Гарри Поттера, я распечатал несколько цветных изображений различных вещей, таких как логотип Гарри Поттера, герб Хогвартса, герб каждого из четырех домов и т. Д., На глянцевом листе формата А4 и наклеил их на коробку в разных местах. места.
Я также использовал бархатный лист желтого цвета, чтобы вырезать полоски и наклеить их на крышку, чтобы коробка была того же цвета, что и дом Гриффиндора. Я покрыл внутреннюю часть крышки и картон сервопривода зеленым бархатным листом. На внутренней стороне крышки я наклеил еще символы и эмблему с изображением животных, которые представляют каждый дом школы Хогвартс.
Затем, наконец, я запихнул все свои вещи, связанные с Гарри Поттером, в коробку, включая глушитель Гриффиндора, дневник с униформой Хогвартса и Бузинную палочку, используемую в этом проекте: D
Рекомендуемые:
Живые движущиеся портреты из Гарри Поттера!: 11 шагов (с изображениями)
Живые движущиеся портреты из Гарри Поттера !: " Потрясающе! Удивительный! Это похоже на волшебство! " - Гилдерой Локхарт Я большой поклонник Гарри Поттера, и одна из вещей, которые мне всегда нравились в Волшебном мире, - это движущиеся портреты. Я наткнулся на Animated Pictur Кайла Стюарта-Франца
Взлом Hexbug Spider XL для добавления компьютерного зрения с помощью смартфона Android: 9 шагов (с изображениями)
Взлом Hexbug Spider XL для добавления компьютерного зрения с помощью смартфона Android: я большой поклонник оригинальной Hexbug ™ Паук. У меня было более дюжины, и я их все взломал. Каждый раз, когда один из моих сыновей идет к друзьям ’ вечеринка по случаю дня рождения, друг получает Hexbug ™ паук в подарок. Я взломал или
Рабочая шляпа сортировки из Гарри Поттера: 8 шагов
Рабочая шляпа сортировки из Гарри Поттера: В нашем маггловском мире нет волшебной шляпы, которая сортировала бы нас по домам. Итак, я использовал эту возможность карантина, чтобы сделать шляпу для сортировки
Вращающийся RGB-дисплей Гарри Поттера: 10 шагов (с изображениями)
Вращающийся RGB-дисплей Гарри Поттера. Решив сделать что-нибудь на день рождения моей дочери, я подумал, что сделать один из акриловых RGB-дисплеев было бы круто. Она фанат фильмов о Гарри Поттере, поэтому выбор темы был легким. Однако решение о том, какие изображения использовать, не было! Мой Wi
Движущийся портрет Гарри Поттера своими руками: 9 шагов (с изображениями)
Проект «Движущийся портрет Гарри Поттера»: следующая инструкция предназначена только для чистокровных волшебников. Если вы не чистокровный, в частности слизеринец, вас предупредили о неизбежной неудаче и поражении, с которыми вы столкнетесь как сквиб, маггл, хаффлпафф или грязнокровка