Оглавление:

Устройство отслеживания лица! Python и Arduino: 5 шагов
Устройство отслеживания лица! Python и Arduino: 5 шагов

Видео: Устройство отслеживания лица! Python и Arduino: 5 шагов

Видео: Устройство отслеживания лица! Python и Arduino: 5 шагов
Видео: Урок #1 Python / Распознавание лиц OpenCV 2024, Ноябрь
Anonim
Image
Image
Устройство отслеживания лица! Python и Arduino
Устройство отслеживания лица! Python и Arduino
Устройство отслеживания лица! Python и Arduino
Устройство отслеживания лица! Python и Arduino

Автор Techovator0819 Мой канал на Youtube Следуйте еще от автора:

IoT: Weather Box (с настраиваемыми будильниками и таймерами)
IoT: Weather Box (с настраиваемыми будильниками и таймерами)
IoT: Weather Box (с настраиваемыми будильниками и таймерами)
IoT: Weather Box (с настраиваемыми будильниками и таймерами)
Многофункциональный автономный робот: «Актив»
Многофункциональный автономный робот: «Актив»
Многофункциональный автономный робот: «Актив»
Многофункциональный автономный робот: «Актив»

О себе: Я просто обожаю создавать новые вещи. Например, вещи, связанные с микроконтроллерами, машиностроением, искусственным интеллектом, информатикой и всем, что меня интересует. А здесь вы найдете все… Подробнее о 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

Рекомендуемые: