Obsah:

Zariadenie na sledovanie tváre! Python a Arduino: 5 krokov
Zariadenie na sledovanie tváre! Python a Arduino: 5 krokov

Video: Zariadenie na sledovanie tváre! Python a Arduino: 5 krokov

Video: Zariadenie na sledovanie tváre! Python a Arduino: 5 krokov
Video: Leap Motion SDK 2024, November
Anonim
Image
Image
Zariadenie na sledovanie tváre! Python a Arduino
Zariadenie na sledovanie tváre! Python a Arduino
Zariadenie na sledovanie tváre! Python a Arduino
Zariadenie na sledovanie tváre! Python a Arduino

Od Techovator0819 Môj kanál YouTube Nasledovať viac od autora:

IoT: Weather Box (s vlastnými alarmmi a časovačmi)
IoT: Weather Box (s vlastnými alarmmi a časovačmi)
IoT: Weather Box (s vlastnými alarmmi a časovačmi)
IoT: Weather Box (s vlastnými alarmmi a časovačmi)
Multifunkčný autonómny robot: „majetok“
Multifunkčný autonómny robot: „majetok“
Multifunkčný autonómny robot: „majetok“
Multifunkčný autonómny robot: „majetok“

O: Rád robím nové veci. Rovnako ako veci zaoberajúce sa mikrořadičmi, strojárstvom, umelou inteligenciou, počítačovou vedou a všetkým, čo ma zaujíma. A tu nájdete všetky … Viac o Techovator0819 »

Zdravím všetkých, ktorí čítajú tento návod. Toto je zariadenie na sledovanie tváre, ktoré funguje v knižnici pythonu s názvom OpenCV. Skratka CV znamená „Computer Vision“. Potom som nastavil sériové rozhranie medzi počítačom a Arduino UNO. To znamená, že to nefunguje iba v Pythone.

Toto zariadenie rozpozná vašu tvár v rámčeku a potom pošle určité príkazy Arduinu na umiestnenie kamery tak, aby zostala vo vnútri snímky! To znie dobre? Vrhnime sa teda do toho.

Zásoby

1. Arduino UNO

2. 2 x servomotory (akékoľvek servomotory budú v poriadku, ale použil som Tower Pro SG90)

3. Inštalácia Pythonu

4. Inštalácia OpenCV

5. Webová kamera

Krok 1: Inštalácia Pythonu a OpenCV

Inštalácia Pythonu je celkom jednoduchá!

www.python.org/downloads/

Pomocou vyššie uvedeného odkazu si môžete stiahnuť verziu pythonu (Mac, Windows alebo Linux), ktorá vám najviac vyhovuje (64 bit alebo 32 bit). Zvyšok procesu inštalácie je jednoduchý a budete prevedení rozhraním.

Po dokončení inštalácie otvorte príkazový riadok a zadajte nasledujúci príkaz:

pip install opencv-python

To by malo nainštalovať knižnicu openCV. V prípade riešenia problémov môžete navštíviť TÚTO stránku.

Po nastavení prostredia a všetkých predpokladov sa pozrime, ako to môžeme skutočne vytvoriť!

Krok 2: Aké sú vlastnosti podobné Haaru?

Haarské funkcie sú vlastnosti digitálneho obrázku. Názov pochádza z Haarových vlniek. Jedná sa o rodinu štvorcových vĺn, ktoré sa používajú na identifikáciu znakov v digitálnom obrázku. Haar kaskády je v podstate klasifikátor, ktorý nám pomáha detegovať objekty (v našom prípade tváre) pomocou funkcií podobných haar.

V našom prípade na zjednodušenie použijeme na identifikáciu tvárí vopred vyškolené kaskády Haar. Môžete nasledovať TENTO odkaz na stránku github a stiahnuť si súbor xml pre Haar Cascade.

1. Kliknite na 'haarcascade_frontalface_alt.xml'

2. Kliknite na tlačidlo „Surové“v pravej hornej časti okna s kódom.

3. Presmeruje vás na inú stránku iba s textom.

4. Kliknite pravým tlačidlom myši a kliknite na položku Uložiť ako..

5. Uložte ho do rovnakého adresára alebo priečinka ako kód pythonu, o ktorom sa chystáte napísať.

Krok 3: Kódovanie v Pythone

import cv2

import numpy as np import serial serial import time

Dovážame všetky knižnice, ktoré potrebujeme.

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

Vytvoríme sériový objekt s názvom „ard“. Ako parametre uvádzame aj názov portu a prenosovú rýchlosť.

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

Vytvárame ďalší objekt pre našu Haar Cascade. Zaistite, aby súbor HaarCascade zostal v rovnakom priečinku ako tento program python.

vid = cv2. VideoCapture (0)

Vytvoríme objekt, ktorý zachytáva video z webovej kamery. 0 ako parameter znamená prvú webovú kameru pripojenú k môjmu počítaču.

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

kým je pravda:

_, frame = vid.read ()#prečíta aktuálny rámec do premenlivého rámca sivý = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #konvertuje rámec -> obrázok v odtieňoch sivej#nasledujúci riadok detekuje tváre. #Prvý parameter je obrázok, na ktorom chcete zistiť #minSize = () určuje minimálnu veľkosť tváre v pixeloch #Kliknutím na odkaz vyššie získate ďalšie informácie o klasifikácii Cascade tváre = face_cascade.detectMultiScale (sivá, min. Veľkosť) = (80, 80), minSusedia = 3) #A pre slučku na detekciu tvárí. pre (x, y, w, h) v plochách: cv2.rectangle (rám, (x, y), (x+w, y+h), (255, 0, 0), 2)#nakreslí okolo seba obdĺžnik tvár Xpos = x+(w/2)#vypočíta súradnicu X stredu tváre. Ypos = y+(h/2) #vypočíta súradnicu Y stredu tváre, ak Xpos> 280: #Nasledujúce bloky kódu skontrolujú, či je tvár ard.write ('L'.encode ()) #on vľavo, vpravo, hore alebo dole vzhľadom na čas.spánok (0,01) #centrum rámca. 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)#Zobrazí rám v samostatnom okne. k = cv2.waitKey (1) & 0xFF, ak (k == ord ('q')): #ak je na klávesnici stlačené 'q', opustí cyklus while. prestávka

cv2.destroyAllWindows () #zavrie všetky okná

ard.close () #zatvára sériovú komunikáciu

vid.release () #prestane prijímať video z webovej kamery.

Krok 4: Programovanie Arduina

Neváhajte a upravte program podľa hardvérového nastavenia, ktoré vyhovuje vašim potrebám.

#zahrnúť

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

neplatné nastavenie () {

// sem vložte svoj inštalačný kód, aby sa spustil raz: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); oneskorenie (1000); }

char vstup = ""; // do tejto premennej je uložený sériový vstup

prázdna slučka () {

// sem vložte svoj hlavný kód, aby sa spúšťal opakovane: if (Serial.available ()) {// kontroluje, či sú v vstupe vyrovnávacej pamäte sériové údaje = Serial.read (); // číta údaje do premennej if (input == 'U') {servoY.write (y+1); // upraví uhol serva podľa vstupu y += 1; // aktualizuje hodnotu uhla} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } else if (vstup == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } vstup = ""; // vymaže premennú} // proces sa stále opakuje !!:)}

Krok 5: Záver

Toto je jeden pekný a interaktívny spôsob, pomocou ktorého môžete navrhnúť začlenenie programu Computer Vision do svojich projektov Arduino. Počítačové videnie je v skutočnosti celkom zábavné. A naozaj dúfam, že sa vám to páčilo. Ak áno, dajte mi vedieť v komentároch. A prihláste sa na odber môjho kanála youtube. Vopred ďakujem <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Odporúča: