Sisukord:
- Tarvikud
- Samm: Pythoni ja OpenCV installimine
- Samm: mis on Haar-sarnased funktsioonid?
- Samm: kodeerimine Pythonis
- Samm: Arduino programmeerimine
- 5. samm: järeldus
Video: Näo jälgimise seade! Python ja Arduino: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Autor: Techovator0819Minu Youtube'i kanal
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:
Arduino mulla niiskuse jälgimise pulk - ärge kunagi unustage oma taimi kastma: 4 sammu (piltidega)
Arduino mulla niiskuse jälgimise pulk - ärge kunagi unustage oma taimi kastma: kas unustate sageli oma toataimi kasta? Või äkki pöörate neile liiga palju tähelepanu ja kastate neid üle? Kui te seda teete, peaksite endale tegema patareitoitega pinnase niiskuse jälgimise pulga. See monitor kasutab mahtuvuslikku mulla niiskust
ATtiny85 kantavate vibreerivate tegevuste jälgimise kell ja programmeerimine ATtiny85 koos Arduino Unoga: 4 sammu (piltidega)
ATtiny85 kantavate vibreerivate tegevuste jälgimise kell ja programmeerimine ATtiny85 koos Arduino Unoga: kuidas teha kantavat aktiivsuse jälgimise kella? See on kantav vidin, mis on loodud stagnatsiooni tuvastamisel vibreerima. Kas veedate suurema osa ajast arvutis nagu mina? Kas istute tunde, ilma et peaksite sellest aru saama? Siis on see seade
ASS-seade (antisotsiaalne sotsiaalne seade): 7 sammu
ASS-seade (antisotsiaalne sotsiaalne seade): öelge, et olete selline inimene, kellele meeldib inimeste läheduses viibida, kuid kellele ei meeldi, et nad liiga lähedale tulevad. Te olete ka rahvale meeldiv ja teil on raske inimestele ei öelda. Nii et te ei tea, kuidas käskida neil tagasi astuda. Noh, sisestage - ASS -seade! Y
Xpedit - atmosfääri jälgimise seade matkamiseks ja matkamiseks: 12 sammu (koos piltidega)
Xpedit - Atmosfääri jälgimisseade matkamiseks ja matkamiseks: kui plaanite seiklusreisi või loodusesse matkata, on kindlasti seljakotis seade, mis aitab teil keskkonda mõista. Eelseisvaks seiklusreisiks plaanisin ehitada pihuseadme, mis aitab
Kerjamisrobot näo jälgimise ja juhtimisega Xboxi kontrolleri poolt - Arduino: 9 sammu (piltidega)
Kerjamisrobot näo jälgimise ja juhtimisega Xboxi kontrolleri poolt - Arduino: Teeme kerjava roboti. See robot üritab mööduvaid inimesi ärritada või neile tähelepanu pöörata. See tuvastab nende näod ja proovib neile lasereid tulistada. Kui annate robotile mündi, laulab ta laulu ja tantsib. Robot vajab