Оглавление:
- Шаг 1. Вещи, которые вам понадобятся:
- Шаг 2: Настройка среды Python:
- Шаг 3: скрипт Python:
- Шаг 4: Код Arduino:
- Шаг 5: Механизм панорамирования-наклона: -
- Шаг 6: Подключение:
- Шаг 7: ТЕСТИРОВАНИЕ:
Видео: ОТСЛЕЖИВАНИЕ ЛИЦА С ПОМОЩЬЮ ARDUINO !!!: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
В предыдущем руководстве я рассказал, как вы можете общаться между Arduino и Python с помощью модуля pyserial и управлять светодиодом. Если вы этого не видели, посмотрите здесь: СВЯЗЬ МЕЖДУ ARDUINO И PYTHON!
И как вы можете определить цвет объекта и отслеживать его на экране, посмотрите здесь: ОПРЕДЕЛЕНИЕ ЦВЕТА С ПОМОЩЬЮ OPENCV И PYTHON.
В этом руководстве я покажу вам, как отслеживать лица с помощью Arduino и Python и заставлять камеру следовать за лицом. Это может показаться трудным, но поверьте мне, это не так. Все, что вам нужно, - это базовые знания Arduino и Python.
Итак, приступим …
Шаг 1. Вещи, которые вам понадобятся:
Требования минимальные. Здесь я предоставил список всего, что вам нужно:
Требования к оборудованию:
- Arduino UNO (Amazon США / Amazon EU)
- Веб-камера (Amazon US / Amazon EU)
- Сервоприводы x 2 (Amazon US / Amazon EU)
- Макетная плата (Amazon US / Amazon EU)
- Комплект сервопривода панорамирования и наклона (Amazon US / Amazon EU)
Требования к программному обеспечению:
- Python 2.7 (должен быть установлен, в ОС Linux он обычно предустановлен)
- OpenCV (вы можете загрузить его отдельно или установить с помощью pip install. Подробнее)
- pyserial (можно установить с помощью pip)
- тупой.
- Haarcascade.
После того, как все будет собрано, мы можем перейти к этапу установки …
Шаг 2: Настройка среды Python:
Установка Python:
Итак, сначала нам нужно запустить Python 2.7. Для этого сначала загрузите и установите python 2.7.14. Чтобы проверить, правильно ли он установлен, перейдите к: Windows Search >> Введите "IDLE" >> Нажмите Enter. Должна появиться оболочка Python.
ИЛИ
В строке поиска введите «CMD» и нажмите Enter, чтобы открыть командную строку. В CMD введите >> python и нажмите Enter, должен отобразиться интерфейс Python.
Если вы видите ошибку в CMD, не паникуйте, вам, вероятно, нужно установить переменную среды. Вы можете следовать этому руководству здесь, чтобы настроить переменную среды.
Установка pyserial, OpenCV и numpy в python:
Для установки этих модулей мы будем использовать pip install, Сначала откройте CMD и введите следующие коды: -
pip install serial
pip install opencv-python> pip install numpy
эти команды установят необходимые модули. Теперь мы можем перейти к кодированию…
Шаг 3: скрипт Python:
Прежде чем приступить к написанию кода, первое, что нужно сделать, это создать новую папку, так как весь код должен храниться в той же папке. Так что создайте новую папку, назовите ее как хотите. и загрузите "Haarcascade" снизу и вставьте его в папку.
Теперь откройте блокнот и напишите приведенный ниже скрипт. Сохраните его как «face.py» в той же папке, что и haarcascade. (Вы можете скачать код, который я предоставил в файле ниже):
# импортировать все необходимые модули
import numpy as np import serial import time import sys import cv2 #Setup Путь связи для arduino (вместо 'COM5' укажите порт, к которому подключен ваш arduino) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print («Подключено к arduino…») # импорт Haarcascade для распознавания лиц face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Для захвата видеопотока с веб-камеры. cap = cv2. VideoCapture (0) # Прочитать захваченное изображение, преобразовать его в серое изображение и найти лица, пока 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (img, (250, 250), 5, (255, 255, 255), -1) gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (gray, 1.3) # определите лицо и нарисуйте вокруг него прямоугольник. for (x, y, w, h) в лицах: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = gray [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} print (arr) print ('X: '+ str (x)) print (' Y: '+ str (y)) print (' x + w: '+ str (x + w)) print (' y + h: '+ str (y + h)) # Центр рентабельности (прямоугольник) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # отправка данных в arduino print ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) # Отобразить поток. cv2.imshow ('img', img) # Нажмите 'Esc', чтобы завершить выполнение k = cv2.waitKey (30) & 0xff if k == 27: break
Как только это будет сделано, переходите к написанию кода для Arduino …
Шаг 4: Код Arduino:
После того, как скрипт python будет готов, нам понадобится скетч Arduino для управления сервоприводом. Обратитесь к приведенному ниже коду, вставьте его в Arduino IDE и сохраните как servo.ino в той же папке, что и face.py и haarcascade. загрузите код и переходите к следующему шагу, чтобы установить соединения.
(Загружаемый файл приведен ниже)
#включают
Servo servoVer; // Вертикальный сервопривод ServoHor; // Горизонтальный сервопривод int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Присоединяем вертикальный сервопривод к выводу 5 servoHor.attach (6); // Присоединяем горизонтальный сервопривод к выводу 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = карта (y, 450, 0, 179, 95); servoX = мин (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (сервоY); }} void loop () {если (Serial.available ()> 0) {если (Serial.read () == 'X') {x = Serial.parseInt (); если (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} пока (Serial.available ()> 0) {Serial.read (); }}}
Шаг 5: Механизм панорамирования-наклона: -
Я использовал готовый комплект для Pan-Tilt. Если вы хотите, вы можете сделать его самостоятельно из дерева / пластика или даже напечатать его на 3D-принтере.
Тот, который я использовал, довольно дешевый, и его очень легко собрать. Тем не менее, если вам нужны инструкции о том, как это сделать, вы можете найти их здесь.
Шаг 6: Подключение:
Схема довольно проста. Просто подключите два сервопривода к Arduino.
- Вертикально к выводу 5
- По горизонтали к выводу 6
- Питание до + 5В
- Земля на GND
Обратитесь к принципиальной схеме для справки.
Шаг 7: ТЕСТИРОВАНИЕ:
- После того, как все будет сделано, последнее, что нужно сделать, это проверить, работает ли оно. Для тестирования сначала убедитесь, что сервоприводы правильно подключены к Arduino и скетч загружен.
- После загрузки скетча обязательно закройте IDE, чтобы порт был свободен для подключения к python.
- Теперь откройте «face.py» с помощью Python IDLE и нажмите «F5», чтобы запустить код. Подключение к Arduino займет несколько секунд, после чего вы должны увидеть окно, транслирующее веб-камеру. Теперь код обнаружит ваше лицо, и сервоприводы будут отслеживать его.
- Сервопривод должен двигаться, когда вы перемещаете объект. Теперь просто прикрепите камеру к сервоприводам, чтобы она двигалась вместе с сервоприводами.
Спасибо.
Рекомендуемые:
Как сделать отслеживание данных о коронавирусе COVID 19 в реальном времени с помощью ESP8266, отображение электронной бумаги: 7 шагов
Как сделать трекер данных о коронавирусе COVID 19 в реальном времени с ESP8266, дисплей электронной бумаги: 1
Отслеживание вспышки COVID-19 с помощью ESP8266: 11 шагов (с изображениями)
Отслеживайте вспышку COVID-19 с помощью ESP8266: этот маленький гаджет поможет вам быть в курсе вспышки коронавируса и ситуации в вашей стране. Это проект на основе Интернета вещей, который отображает в реальном времени данные о случаях заболевания, смертельных исходах и выздоровевших от коронавируса (COVID-19)
Отслеживание качества воздуха с помощью Grafana и Raspberry Pi: 7 шагов
Отслеживайте качество воздуха с помощью Grafana и Raspberry Pi: я искал небольшой небольшой проект IOT, и друг порекомендовал мне проверить этот учебник: https: //dzone.com/articles/raspberry-pi-iot-sensor… Я очень рекомендую следовать руководству по настройке Raspberry Pi для мониторинга
Отслеживание вариаций ускорения с помощью Raspberry Pi и MMA7455 с использованием Python: 6 шагов
Отслеживание вариаций ускорения с помощью Raspberry Pi и MMA7455 с использованием Python: я не спотыкался, я тестировал силу тяжести. Это все еще работает … Изображение ускоряющегося космического челнока поясняет, что часы в самой высокой точке шаттла будут показывать более высокую скорость, чем часы у основания, из-за гравитационного расширения времени. Некоторые
Робот-попрошайничество с отслеживанием лица и управлением с помощью контроллера Xbox - Arduino: 9 шагов (с изображениями)
Робот-попрошайничество с отслеживанием лица и управлением с помощью контроллера Xbox - Arduino: Мы собираемся сделать робота-попрошайку. Этот робот будет пытаться рассердить или привлечь внимание проходящих мимо людей. Он обнаружит их лица и попытается выстрелить в них лазером. Если вы дадите роботу монетку, он споет песню и станцует. Роботу понадобится