Съдържание:

ПРОСЛЕДВАНЕ НА ЛИЦЕ С ИЗПОЛЗВАНЕ НА ARDUINO !!!: 7 стъпки
ПРОСЛЕДВАНЕ НА ЛИЦЕ С ИЗПОЛЗВАНЕ НА ARDUINO !!!: 7 стъпки

Видео: ПРОСЛЕДВАНЕ НА ЛИЦЕ С ИЗПОЛЗВАНЕ НА ARDUINO !!!: 7 стъпки

Видео: ПРОСЛЕДВАНЕ НА ЛИЦЕ С ИЗПОЛЗВАНЕ НА ARDUINO !!!: 7 стъпки
Видео: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Ноември
Anonim
ПРОСЛЕДВАНЕ НА ЛИЦЕ С ИЗПОЛЗВАНЕ НА ARDUINO !!!
ПРОСЛЕДВАНЕ НА ЛИЦЕ С ИЗПОЛЗВАНЕ НА ARDUINO !!!

В предишна инструкция споделих как можете да комуникирате между Arduino и Python с помощта на модул „pyserial“и да контролирате светодиод. Ако не сте го виждали, проверете тук: КОМУНИКАЦИЯ МЕЖДУ ARDUINO & PYTHON!

И как можете да откриете цвета на обект и да го проследите на екрана, проверете това тук: ЦВЕТНО ОТКРИВАНЕ С ИЗПОЛЗВАНЕ НА OPENCV И ПИТОН.

В тази инструкция ще ви покажа как да проследявате лица с помощта на Arduino & Python и да накарам камерата да следва лицето. Това може да звучи трудно, но повярвайте ми, че не е. Всичко, от което се нуждаете, са основни познания за Arduino и Python.

Така че нека започнем…

Стъпка 1: Нещата, от които ще се нуждаете:

Нещата, от които се нуждаете
Нещата, от които се нуждаете
Нещата, от които се нуждаете
Нещата, от които се нуждаете
Нещата, от които се нуждаете
Нещата, от които се нуждаете

Изискванията са минимални. Тук съм предоставил списък с части от всичко, от което се нуждаете:

Хардуерни изисквания:

  • Arduino UNO (Amazon САЩ / Amazon ЕС)
  • Уеб камера (Amazon САЩ / Amazon ЕС)
  • Серво х 2 (Amazon САЩ / Amazon ЕС)
  • Платформа (Amazon САЩ / Amazon ЕС)
  • Комплект за накланяне на Servo Pan (Amazon САЩ / Amazon ЕС)

Софтуерни изисквания:

  1. Python 2.7 (Трябва да бъде инсталиран, Linux OS обикновено го има предварително инсталиран)
  2. OpenCV (Можете да го изтеглите отделно или да инсталирате с помощта на „pip install“Обяснено допълнително)
  3. pyserial (Може да се инсталира с pip)
  4. буца.
  5. Харкаскада.

След като всичко е събрано, можем да преминем към стъпката за инсталиране …

Стъпка 2: Настройка на среда на Python:

Настройка на среда на Python
Настройка на среда на Python
Настройка на среда на Python
Настройка на среда на Python
Настройка на средата на Python
Настройка на средата на Python

Инсталиране на Python:

Така че първо имаме нужда от Python 2.7, работещ и работещ. За да направите това, първо изтеглете и инсталирайте python 2.7.14. За да проверите дали е инсталиран правилно Отидете: Търсене на Windows >> Въведете „IDLE“>> Натиснете Enter. Трябва да се появи Python Shell.

ИЛИ

При търсене въведете „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 скрипт:

Python скрипт
Python скрипт

Преди да започнете да пишете код, първо трябва да направите нова папка, тъй като целият код трябва да се съхранява в същата папка. Затова създайте нова папка, наречете я както искате. и изтеглете „Haarcascade“отдолу и го поставете в папката.

Сега отворете бележника и напишете скрипта, даден по -долу, запишете го като 'face.py' в същата папка като haarcascade. (Можете да изтеглите кода, който съм предоставил по -долу):

#импортирайте всички необходими модули

import numpy като np импортиране на сериен импорт време за импортиране sys импортиране cv2 #Настройка Комуникационен път за 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) сиво = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) лица = face_cascade.detectMultiScale (сиво, 1.3) # открийте лицето и направете правоъгълник около него. за (x, y, w, h) в лица: cv2.rectangle (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_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)) # Център на roi (Правоъгълник) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 печат (xx) печат (yy) център = (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) #Hit 'Esc' за прекратяване на изпълнението k = cv2.waitKey (30) & 0xff, ако k == 27: break

След като това стане, продължете да пишете кода за arduino …

Стъпка 4: Arduino код:

Код на Arduino
Код на Arduino

След като скриптът на python е готов, се нуждаем от скица на arduino, за да контролираме сервото. Вижте кода по -долу, поставете го в Arduino IDE и го запазете като „servo.ino“в същата папка като face.py и haarcascade. качете кода и преминете към следващата стъпка, за да осъществите връзките.

(Файл за изтегляне, даден по -долу)

#включва

Servo servoVer; // Вертикално серво серво сервоХор; // Хоризонтално Servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Прикрепете вертикално серво към Pin 5 servoHor.attach (6); // Прикрепете хоризонтално серво към Pin 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 = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

Стъпка 5: Механизъм на накланяне:-

Механизъм на накланяне
Механизъм на накланяне
Механизъм на накланяне
Механизъм на накланяне

Използвал съм наличен комплект за Pan-Tilt. Ако искате, можете да си направите сами, като използвате дърво/пластмаса или дори 3D печат.

Този, който използвах, е доста евтин и много лесен за сглобяване. И все пак, ако искате инструкции как да направите това, можете да го намерите тук.

Стъпка 6: Осъществяване на връзки:

Осъществяване на връзки
Осъществяване на връзки
Осъществяване на връзки
Осъществяване на връзки

Схемата е доста проста. Просто свържете два сервомотора към arduino.

  1. Вертикално към Pin 5
  2. Хоризонтално към Pin 6
  3. Захранване до +5V
  4. Заземяване към GND

Проверете електрическата схема за справка.

Стъпка 7: ИЗПИТВАНЕ:

  • След като всичко е направено, последното нещо, което трябва да направите, е да проверите дали работи. За да тествате първо, уверете се, че сервомоторите са правилно свързани към arduino и е качена скица.
  • След качване на скица не забравяйте да затворите IDE, така че портът да е свободен да се свърже с python.
  • Сега отворете „face.py“с Python IDLE и натиснете „F5“, за да стартирате кода. Ще отнеме няколко секунди, за да се свържете с arduino и тогава трябва да можете да видите прозорец, който предава уеб камерата. Сега кодът ще открие лицето ви и сервомоторите ще го проследят.
  • Сервото трябва да се движи, докато премествате обекта. Сега просто прикрепете камерата към сервомоторите, така че тя да се движи заедно със сервомоторите.

Благодаря ти.

Препоръчано: