Оглавление:
- Запасы
- Шаг 1. Установка Python и OpenCV
- Шаг 2: Что такое особенности Хаара?
- Шаг 3. Кодирование на Python
- Шаг 4: программирование Arduino
- Шаг 5: Заключение
Видео: Устройство отслеживания лица! Python и Arduino: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Автор Techovator0819 Мой канал на Youtube Следуйте еще от автора:
О себе: Я просто обожаю создавать новые вещи. Например, вещи, связанные с микроконтроллерами, машиностроением, искусственным интеллектом, информатикой и всем, что меня интересует. А здесь вы найдете все… Подробнее о Techovator0819 »
Привет всем, кто читает это руководство. Это устройство для отслеживания лица, которое работает с библиотекой Python под названием OpenCV. CV означает «компьютерное зрение». Затем я настроил последовательный интерфейс между моим ПК и моей Arduino UNO. Это означает, что это работает не только на Python.
Это устройство распознает ваше лицо в кадре, а затем отправляет определенные команды на Arduino, чтобы расположить камеру таким образом, чтобы она оставалась внутри кадра! Звучит круто? Тогда давайте прыгнем прямо в это.
Запасы
1. Arduino UNO
2. 2 серводвигателя (подойдут любые серводвигатели, но я использовал Tower Pro SG90)
3. Установка Python
4. Установка OpenCV
5. Веб-камера
Шаг 1. Установка Python и OpenCV
Установить Python довольно просто!
www.python.org/downloads/
Вы можете перейти по указанной выше ссылке, чтобы загрузить версию Python (Mac, Windows или Linux), которая вам больше всего подходит (64 или 32 бит). Остальная часть процесса установки проста, и вы будете руководствоваться интерфейсом.
По завершении установки откройте командную строку и введите следующее:
pip установить opencv-python
Это должно установить библиотеку openCV. В случае возникновения проблем, вы можете заглянуть на ЭТУ страницу.
После настройки среды и всех предварительных требований давайте посмотрим, как мы можем это построить!
Шаг 2: Что такое особенности Хаара?
Характеристики, подобные Хаару, являются особенностями цифрового изображения. Название происходит от вейвлетов Хаара. Это семейство волн квадратной формы, которые используются для идентификации элементов цифрового изображения. Каскады Хаара - это, по сути, классификатор, который помогает нам обнаруживать объекты (в нашем случае лица), используя функции, похожие на волосы.
В нашем случае для простоты мы будем использовать предварительно обученные каскады Хаара для идентификации лиц. Вы можете перейти по ЭТОЙ ссылке на странице github и загрузить файл xml для каскада Хаара.
1. Щелкните "haarcascade_frontalface_alt.xml".
2. Нажмите кнопку «Raw» в верхней правой части окна кода.
3. Он направит вас на другую страницу только с текстом.
4. Щелкните правой кнопкой мыши и выберите "Сохранить как …".
5. Сохраните его в том же каталоге или папке, что и код Python, который вы собираетесь писать.
Шаг 3. Кодирование на Python
импорт cv2
import numpy as np import serial import time
Мы импортируем все необходимые библиотеки.
ard = serial. Serial ("COM3", 9600)
Мы создаем серийный объект под названием «ard». Мы также указываем в качестве параметров Имя порта и BaudRate.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Создаем еще один объект для нашего Каскада Хаара. Убедитесь, что файл HaarCascade остается в той же папке, что и эта программа на Python.
vid = cv2. VideoCapture (0)
Создаем объект, который снимает видео с веб-камеры. 0 в качестве параметра означает первую веб-камеру, подключенную к моему ПК.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
в то время как True:
_, frame = vid.read () # считывает текущий кадр в переменную frame gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) # преобразует кадр -> изображение в градациях серого # следующая строка обнаруживает лица. # Первый параметр - это изображение, которое вы хотите обнаружить. # MinSize = () указывает минимальный размер лица в пикселях # Щелкните ссылку выше, чтобы узнать больше о каскадной классификации faces = face_cascade.detectMultiScale (gray, minSize = (80, 80), minNeighbors = 3) # Цикл for для обнаружения лиц. for (x, y, w, h) в лицах: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) # рисует прямоугольник вокруг face Xpos = x + (w / 2) # вычисляет координату X центра лица. Ypos = y + (h / 2) # вычисляет координату Y центра лица, если Xpos> 280: # Следующие блоки кода проверяют, является ли лицо ard.write ('L'.encode ()) #on слева, справа, сверху или снизу относительно time.sleep (0.01) #center кадра. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0,01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0,01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame) # отображает фрейм в отдельном окне. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): # если на клавиатуре нажимается 'q', цикл while завершается. перерыв
cv2.destroyAllWindows () # закрывает все окна
ard.close () # закрывает последовательную связь
vid.release () # перестает получать видео с веб-камеры.
Шаг 4: программирование Arduino
Не стесняйтесь изменять программу в соответствии с настройками вашего оборудования в соответствии с вашими потребностями.
#включают
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
void setup () {
// поместите сюда свой установочный код для однократного запуска: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); задержка (1000); }
char input = ""; // в этой переменной хранится серийный ввод
void loop () {
// поместите сюда ваш основной код для повторного запуска: if (Serial.available ()) {// проверяет, есть ли какие-либо данные в последовательном буфере input = Serial.read (); // считывает данные в переменную if (input == 'U') {servoY.write (y + 1); // регулирует угол сервопривода в соответствии с вводом y + = 1; // обновляет значение угла} else if (input == 'D') {servoY.write (y-1); у - = 1; } else {servoY.write (y); } если (input == 'L') {servoX.write (x-1); х - = 1; } иначе, если (input == 'R') {servoX.write (x + 1); х + = 1; } еще {servoX.write (x); } input = ""; // очищает переменную} // процесс повторяется !!:)}
Шаг 5: Заключение
Это приятный и интерактивный способ, с помощью которого вы можете использовать компьютерное зрение в своих проектах Arduino. Компьютерное зрение на самом деле довольно забавно. И я очень надеюсь, что вам понравилось. Если да, дайте мне знать в комментариях. И, пожалуйста, подпишитесь на мой канал на YouTube. Заранее спасибо <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Рекомендуемые:
Брелок для отслеживания мандалорцев: 7 шагов
Мандалорский брелок для слежения: после того, как я увидел несколько первых эпизодов Мандалорского брелока, мне не терпелось попробовать создать брелок для слежения. У многих других была такая же идея, и они опубликовали множество справочных материалов, над которыми я мог работать при разработке брелка для отслеживания в Fusion 360
Система отслеживания движения головы для VR: 8 шагов
Система отслеживания движения головы для VR: Меня зовут Сэм КОДО, в этом уроке я шаг за шагом научу вас, как использовать датчики Arduino IMU для создания системы отслеживания движения головы для VR. В этом проекте вам понадобятся: - ЖК-дисплей HDMI : https: //www.amazon.com/Elecrow-Capacitive-interfac…- И
Распознавание и идентификация лиц - Идентификатор лица Arduino с использованием OpenCV Python и Arduino: 6 шагов
Распознавание и идентификация лиц | Идентификатор лица Arduino с использованием OpenCV Python и Arduino. Распознавание лиц AKA Face ID - одна из самых важных функций мобильных телефонов в настоящее время. Итак, у меня возник вопрос: «Могу ли я иметь идентификатор лица для моего проекта Arduino?» и ответ - да … Мой путь начался следующим образом: Шаг 1: Доступ к нам
Куб времени - гаджет для отслеживания времени Arduino: 6 шагов
Time Cube - гаджет для отслеживания времени Arduino: я хотел бы предложить вам простой, но действительно полезный проект Arduino для отслеживания событий времени, перевернув какой-нибудь интеллектуальный гаджет-куб. Переверните его на "Работа". > " Учиться " > " Работа по дому " > " Отдых " сторона, и он посчитает
Пистолет для отслеживания лица: 4 шага
Пистолет для отслеживания лица: этот проект является расширением проекта лазерного пистолета с путевой проволокой, показанного здесь - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Единственная разница в том, что пушка срабатывает не от лазера, а от