Съдържание:

Устройство за проследяване на лица! Python & Arduino: 5 стъпки
Устройство за проследяване на лица! Python & Arduino: 5 стъпки

Видео: Устройство за проследяване на лица! Python & Arduino: 5 стъпки

Видео: Устройство за проследяване на лица! Python & Arduino: 5 стъпки
Видео: Leap Motion SDK 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 означава „Computer Vision“. След това настроих сериен интерфейс между моя компютър и моя Arduino UNO. Това означава, че това не работи само на Python.

Това устройство разпознава лицето ви в рамката, след което изпраща определени команди до Arduino да позиционира камерата по такъв начин, че да остане в рамката! Звучи яко? Нека тогава се впуснем в него.

Консумативи

1. Arduino UNO

2. 2 x серво мотора (Всички серво мотори ще са добре, но използвах 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: Какви са Хааровите характеристики?

Хааровите характеристики са характеристики на цифрово изображение. Името идва от вълновите вълни на Хаар. Това са семейство квадратни вълни, които се използват за идентифициране на характеристики в цифрово изображение. Каскадите на Haar са основно класификатор, който ни помага да откриваме обекти (в нашия случай лица), използвайки функциите, подобни на haar.

В нашия случай за простота ще използваме предварително обучени Haar Cascades за идентифициране на лица. Можете да следвате ТАЗИ връзка на страница на github и да изтеглите xml файла за Haar Cascade.

1. Кликнете върху „haarcascade_frontalface_alt.xml“

2. Щракнете върху бутона „Raw“в горната дясна част на прозореца с кода.

3. Ще ви насочи към друга страница само с текст.

4. Щракнете с десния бутон и натиснете „Запазване като..“

5. Запазете го в същата директория или папка като тази на кода на python, за който пишете.

Стъпка 3: Кодиране в Python

импортиране на cv2

import numpy като np импортиране на серийно време за импортиране

Импортираме всички необходими библиотеки.

ard = serial. Serial ("COM3", 9600)

Създаваме сериен обект, наречен 'ard'. Ние също така посочваме името на порта и BaudRate като параметри.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Ние създаваме друг обект за нашата Haar Cascade. Уверете се, че файлът HaarCascade остава в същата папка като тази програма на python.

vid = cv2. VideoCapture (0)

Създаваме обект, който улавя видео от уеб камерата. 0 като параметър означава първата уеб камера, свързана към моя компютър.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

докато е вярно:

_, frame = vid.read ()#чете текущия кадър в променливата рамка grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#преобразува рамка -> изображение в сиви тонове#следният ред разпознава лица. #Първият параметър е изображението, което искате да откриете на #minSize = () определя минималния размер на лицето по отношение на пиксели #Кликнете върху горната връзка, за да научите повече за Cascade Classification lica = face_cascade.detectMultiScale (сиво, minSize = (80, 80), minNeighbors = 3) #A for цикъл за откриване на лица. за (x, y, w, h) в лица: cv2.rectangle (рамка, (x, y), (x+w, y+h), (255, 0, 0), 2)#нарисува правоъгълник около лицето Xpos = x+(w/2)#изчислява X координатата на центъра на лицето. Ypos = y+(h/2) #изчислява Y координатата на центъра на лицето, ако Xpos> 280: #Следните кодови блокове проверяват дали лицето е ard.write ('L'.encode ()) #on ляво, дясно, отгоре или отдолу по отношение на time.sleep (0.01) #център на кадъра. 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;

Серво сервоY;

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 ()) {// проверява дали има данни в серийния буфер вход = Serial.read (); // чете данните в променлива if (input == 'U') {servoY.write (y+1); // регулира серво ъгъла според входа y += 1; // актуализира стойността на ъгъла} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (вход == 'L') {servoX.write (x-1); x -= 1; } else if (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } вход = ""; // изчиства променливата} // процесът се повтаря !!:)}

Стъпка 5: Заключение

Това е един хубав и интерактивен начин, чрез който можете да проектирате да включите Computer Vision във вашите проекти на Arduino. Computer Vision всъщност е доста забавно. Искрено се надявам, че на вас ви е харесало. Ако да, уведомете ме в коментарите. И моля, абонирайте се за канала ми в youtube. Благодаря предварително <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

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