Sisukord:

Näo jälgimise seade! Python ja Arduino: 5 sammu
Näo jälgimise seade! Python ja Arduino: 5 sammu

Video: Näo jälgimise seade! Python ja Arduino: 5 sammu

Video: Näo jälgimise seade! Python ja Arduino: 5 sammu
Video: Nmap.exe Demystified: The Ultimate Network Discovery Tool Part 1 2024, November
Anonim
Image
Image
Näo jälgimise seade! Python ja Arduino
Näo jälgimise seade! Python ja Arduino
Näo jälgimise seade! Python ja Arduino
Näo jälgimise seade! Python ja Arduino

Autor: Techovator0819Minu Youtube'i kanal

IoT: ilmastikukast (kohandatud häirete ja taimeritega)
IoT: ilmastikukast (kohandatud häirete ja taimeritega)
IoT: ilmastikukast (kohandatud häirete ja taimeritega)
IoT: ilmastikukast (kohandatud häirete ja taimeritega)
Multifunktsionaalne autonoomne robot: vara
Multifunktsionaalne autonoomne robot: vara
Multifunktsionaalne autonoomne robot: vara
Multifunktsionaalne autonoomne robot: vara

Teave: Mulle lihtsalt meeldib uusi asju teha. Nagu asjad, mis käsitlevad mikrokontrollereid, masinaehitust, tehisintellekti, arvutiteadust ja kõike, mis mind huvitab. Ja siit leiate kõik… Rohkem Techovator0819 kohta »

Tere kõigile, kes seda juhendit loevad. See on näojälgimisseade, mis töötab OpenCV nimelise pythoni raamatukogul. CV tähistab "Computer Vision". Seejärel seadistasin oma arvuti ja Arduino UNO vahele jadaliidese. See tähendab, et see ei tööta ainult Pythonis.

See seade tuvastab kaadris teie näo ja saadab seejärel Arduinole teatud käsud kaamera paigutamiseks selliselt, et see jääks kaadrisse! Kõlab lahedalt? Hüppame siis asja juurde.

Tarvikud

1. Arduino UNO

2. 2 x servomootorit (kõik servomootorid sobivad, kuid kasutasin Tower Pro SG90)

3. Pythoni installimine

4. OpenCV installimine

5. Veebikaamera

Samm: Pythoni ja OpenCV installimine

Pythoni installimine on üsna lihtne!

www.python.org/downloads/

Python -versiooni (Mac, Windows või Linux) allalaadimiseks, mis teile kõige paremini sobib (64 -bitine või 32 -bitine), saate ülaltoodud linki järgida. Ülejäänud installiprotsess on lihtne ja teid juhendab liides.

Kui olete installimise lõpetanud, avage käsuviip ja tippige järgmine tekst:

pip install opencv-python

See peaks installima openCV kogu. Tõrkeotsingu korral saate vaadata seda lehte.

Pärast keskkonna ja kõigi eelduste seadistamist vaatame, kuidas seda tegelikult luua!

Samm: mis on Haar-sarnased funktsioonid?

Haar-sarnased funktsioonid on digitaalse pildi omadused. Nimi pärineb Haar waveletsist. Need on ruudukujuliste lainete perekond, mida kasutatakse digitaalse pildi funktsioonide tuvastamiseks. Haari kaskaadid on põhimõtteliselt klassifikaator, mis aitab meil tuvastada objekte (meie puhul nägusid), kasutades jäneselaadseid funktsioone.

Meie puhul kasutame lihtsuse huvides nägude tuvastamiseks eelkoolitatud Haari kaskaade. Võite järgida seda Githubi lehe linki ja laadida alla Haar Cascade'i xml-fail.

1. Klõpsake valikul „haarcascade_frontalface_alt.xml”

2. Klõpsake koodiakna paremas ülanurgas nuppu „Toores”.

3. See suunab teid teisele lehele, kus on ainult tekst.

4. Paremklõpsake ja klõpsake nuppu Salvesta nimega.

5. Salvestage see samasse kataloogi või kausta, kuhu kirjutate python -koodi.

Samm: kodeerimine Pythonis

import cv2

import numpy kui np impordi jadaimpordi aeg

Impordime kõik vajalikud raamatukogud.

ard = jada. Seriaalne ("COM3", 9600)

Loome jadaobjekti nimega 'ard'. Samuti määrame parameetriteks pordi nime ja BaudRate.

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

Loome oma Haari kaskaadi jaoks veel ühe objekti. Veenduge, et HaarCascade -fail jääks samasse kausta kui see python -programm.

vid = cv2. VideoCapture (0)

Loome objekti, mis jäädvustab veebikaamerast video. 0 kui parameeter tähendab esimest arvutiga ühendatud veebikaamerat.

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

kuigi tõsi:

_, frame = vid.read ()#loeb praeguse kaadri muutuva raamiga halliks = cv2.cvtColor (kaader, cv2. COLOR_BGR2GRAY)#teisendab raami -> halltoonides pilt#järgmine rida tuvastab näod. #Esimene parameeter on pilt, mida soovite tuvastada #minSize = () määrab näo minimaalse suuruse pikslites #Klõpsake ülaltoodud lingil, et saada lisateavet Cascade Classification nägude kohta = face_cascade.detectMultiScale (hall, minSize = (80, 80), minNeighbors = 3) #A silmuste jaoks nägude tuvastamiseks. jaoks (x, y, w, h) nägudes: cv2. ristkülik (raam, (x, y), (x+w, y+h), (255, 0, 0), 2) #joonistab ümber ristküliku nägu Xpos = x+(w/2) #arvutab näo keskpunkti X-koordinaadi. Ypos = y+(h/2) #kalkuleerib näo keskpunkti Y-koordinaadi, kui Xpos> 280: #Järgmised koodiplokid kontrollivad, kas nägu on ard.write ('L'. Encode ()) #on vasakule, paremale, ülemisele või alumisele ajale. uni (0,01) #raami keskpunkt. elif Xpos 280: ard.write ('D'.kood ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'. Kodeerib ()) time.sleep (0.01) break cv2.imshow ('kaader', kaader)#kuvab kaadri eraldi aknas. k = cv2.waitKey (1) & 0xFF, kui (k == ord ('q')): #kui 'q' vajutatakse klaviatuuril, väljub see samasilmusest. murda

cv2.destroyAllWindows () #sulgeb kõik aknad

ard.close () #sulgeb jadaühenduse

vid.release () #lõpetab video vastuvõtmise veebikaamerast.

Samm: Arduino programmeerimine

Muutke programmi julgelt vastavalt oma riistvara seadistusele vastavalt teie vajadustele.

#kaasake

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

tühine seadistus () {

// pange oma seadistuskood siia, et üks kord käivitada: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); viivitus (1000); }

char sisend = ""; // jadasisend salvestatakse sellesse muutujale

void loop () {

// pange siia oma põhikood, et seda korduvalt käitada: if (Serial.available ()) {// kontrollib, kas jadapuhvrisisendis on mingeid andmeid = Serial.read (); // loeb andmed muutujaks, kui (sisend == 'U') {servoY.write (y+1); // reguleerib servonurka vastavalt sisendile y += 1; // uuendab nurga väärtust} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } kui (sisend == 'L') {servoX.write (x-1); x -= 1; } else if (sisend == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } sisend = ""; // kustutab muutuja} // protsess kordub pidevalt !!:)}

5. samm: järeldus

See on üks tore ja interaktiivne viis, mille kaudu saate kujundada arvutivisiooni oma Arduino projektidesse. Arvuti nägemine on tegelikult üsna lõbus. Ja ma tõesti loodan, et teile meeldisid. Kui jah, siis andke mulle kommentaarides teada. Ja palun tellige minu youtube kanal. Ette tänades <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Soovitan: