Cuprins:
- Provizii
- Pasul 1: Instalarea Python și OpenCV
- Pasul 2: Care sunt caracteristicile de tip Haar?
- Pasul 3: Codificare în Python
- Pasul 4: Programarea Arduino
- Pasul 5: Concluzie
Video: Dispozitiv de urmărire a feței! Python și Arduino: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
De Techovator0819 Canalul meu Youtube Urmăriți mai multe de la autor:
Despre: Îmi place doar să fac lucruri noi. La fel ca lucrurile care au legătură cu microcontrolerele, ingineria mecanică, inteligența artificială, informatica și orice altceva care mă interesează. Și aici veți găsi toate … Mai multe despre Techovator0819 »
Bună ziua tuturor, citind acest lucru instructiv. Acesta este un dispozitiv de urmărire a feței care funcționează pe o bibliotecă Python numită OpenCV. CV înseamnă „Viziune computerizată”. Apoi am configurat o interfață serială între computerul meu și Arduino UNO. Deci asta înseamnă că acest lucru nu funcționează doar pe Python.
Acest dispozitiv vă recunoaște fața în cadru, apoi trimite anumite comenzi către Arduino pentru a poziționa camera în așa fel încât să rămână în interiorul cadrului! Suna bine? Să saltăm chiar în el atunci.
Provizii
1. Arduino UNO
2. 2 x Servomotoare (Orice servomotor va fi bine, dar am folosit Tower Pro SG90)
3. Instalarea Python
4. Instalarea OpenCV
5. Cameră web
Pasul 1: Instalarea Python și OpenCV
Instalarea Python este destul de simplă!
www.python.org/downloads/
Puteți urmări linkul de mai sus pentru a descărca versiunea python (Mac, Windows sau Linux) care vi se potrivește cel mai bine (64 biți sau 32 biți). Restul procesului de instalare este simplu și veți fi ghidat de interfață.
După ce ați terminat instalarea, deschideți promptul de comandă și tastați următoarele:
pip instalează opencv-python
Aceasta ar trebui să instaleze biblioteca openCV. În caz de depanare, puteți consulta ACEASTA pagină.
După ce am configurat mediul înconjurător și toate condițiile prealabile, să vedem cum putem construi acest lucru!
Pasul 2: Care sunt caracteristicile de tip Haar?
Caracteristicile asemănătoare Haar sunt caracteristici ale unei imagini digitale. Numele provine de la undele Haar. Acestea sunt familii de unde pătrate care sunt utilizate pentru a identifica caracteristicile unei imagini digitale. Cascadele Haar sunt practic un clasificator care ne ajută să detectăm obiecte (în cazul nostru, fețele) folosind caracteristicile asemănătoare haarului.
În cazul nostru, pentru simplitate, vom folosi Haar Cascades pre-antrenate pentru a identifica fețele. Puteți urmări ACEST link al unei pagini github și puteți descărca fișierul xml pentru Haar Cascade.
1. Faceți clic pe „haarcascade_frontalface_alt.xml”
2. Faceți clic pe butonul „Raw” din partea dreaptă sus a ferestrei de cod.
3. Vă va direcționa către o altă pagină cu numai text.
4. Faceți clic dreapta și apăsați „Salvare ca..”
5. Salvați-l în același director sau folder ca cel al codului python pe care doriți să-l scrieți.
Pasul 3: Codificare în Python
import cv2
import numpy ca timp de import serie np import
Importăm toate bibliotecile de care avem nevoie.
ard = serial. Serial ("COM3", 9600)
Creăm un obiect serial numit „ard”. De asemenea, specificăm numele portului și BaudRate ca parametri.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Creăm un alt obiect pentru Cascada noastră Haar. Asigurați-vă că fișierul HaarCascade rămâne în același folder cu acest program python.
vid = cv2. VideoCapture (0)
Creăm un obiect care captează videoclipuri de pe camera web. 0 ca parametru înseamnă prima cameră web conectată la computerul meu.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
în timp ce este adevărat:
_, frame = vid.read () # citește cadrul curent în cadrul variabil gri = cv2.cvtColor (cadru, cv2. COLOR_BGR2GRAY) #convertește cadrul -> imagine în tonuri de gri # următoarea linie detectează fețele. # Primul parametru este imaginea pe care doriți să o detectați pe # minSize = () specifică dimensiunea minimă a feței în termeni de pixeli # Faceți clic pe linkul de mai sus pentru a afla mai multe despre clasificarea în cascadă faces = face_cascade.detectMultiScale (gri, minSize = (80, 80), minNeighbours = 3) #A pentru buclă pentru a detecta fețele. pentru (x, y, w, h) în fețe: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) #trage un dreptunghi în jurul fața Xpos = x + (w / 2) #calculează coordonata X a centrului feței. Ypos = y + (h / 2) #calcualizează coordonata Y a centrului feței dacă Xpos> 280: # Următoarele blocuri de cod verifică dacă fața este ard.write ('L'.encode ()) #on stânga, dreapta, sus sau jos în raport cu timpul.sleep (0.01) #centrul cadrului. 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) # afișează cadrul într-o fereastră separată. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #if 'q' este apăsat pe tastatură, iese din bucla while. pauză
cv2.destroyAllWindows () # închide toate ferestrele
ard.close () # închide comunicarea în serie
vid.release () # oprește să primească videoclipuri de pe camera web.
Pasul 4: Programarea Arduino
Simțiți-vă liber să modificați programul conform setărilor hardware care se potrivesc nevoilor dumneavoastră.
#include
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
configurare nulă () {
// puneți codul de configurare aici, pentru a rula o dată: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); întârziere (1000); }
char input = ""; // intrarea serială este stocată în această variabilă
bucla nulă () {
// puneți codul principal aici, pentru a rula în mod repetat: if (Serial.available ()) {// verifică dacă există date în intrarea bufferului serial = Serial.read (); // citește datele într-o variabilă if (input == 'U') {servoY.write (y + 1); // reglează unghiul servo în funcție de intrarea y + = 1; // actualizează valoarea unghiului} 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 (input == 'R') {servoX.write (x + 1); x + = 1; } else {servoX.write (x); } input = ""; // șterge variabila} // procesul continuă să se repete !!:)}
Pasul 5: Concluzie
Acesta este un mod frumos și interactiv prin care puteți proiecta încorporați Computer Vision în proiectele dvs. Arduino. Viziunea pe computer este de fapt destul de distractivă. Și sper că v-a plăcut. Dacă da, anunțați-mă în comentarii. Și vă rog să vă abonați la canalul meu de pe YouTube. Mulțumesc anticipat <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Recomandat:
ATtiny85 Urmărire și programare urmărire activități vibrante purtabile ATtiny85 cu Arduino Uno: 4 pași (cu imagini)
ATtiny85 Ceas și programare de urmărire a activității vibrante purtabile ATtiny85 Cu Arduino Uno: Cum să faci ceasul de urmărire a activității purtabil? Acesta este un gadget portabil conceput pentru a vibra atunci când detectează stagnarea. Îți petreci cea mai mare parte a timpului pe computer ca mine? Stai ore în șir fără să-ți dai seama? Atunci acest dispozitiv este f
Urmărire și urmărire pentru magazine mici: 9 pași (cu imagini)
Urmărire și urmărire pentru magazine mici: Acesta este un sistem creat pentru magazinele mici care se presupune că se montează pe biciclete electrice sau scutere electronice pentru livrări la distanță scurtă, de exemplu o brutărie care dorește să livreze produse de patiserie. Ce înseamnă urmărirea și urmărirea? Urmărirea și urmărirea este un sistem utilizat de ca
Dispozitiv de siguranță pentru femei cu urmărire GPS și alerte folosind Arduino: 6 pași
Dispozitiv de siguranță pentru femei cu urmărire GPS și alerte folosind Arduino: Cu toată tehnologia disponibilă pentru noi în ultima perioadă, nu este greu să construiești un dispozitiv de siguranță pentru femei, care nu numai că va genera o alarmă de urgență, ci va trimite și un mesaj prietenilor, familiei tale , sau persoana în cauză. Aici vom construi o trupă
Pistola de urmărire a feței: 4 pași
Pistola de urmărire a feței: acest proiect este o extindere a proiectului pistolului cu sârmă de declanșare a laserului prezentat aici - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Singura diferență este că arma nu va fi declanșată de laser, ci de
Construiți un dispozitiv de urmărire a ușii de hambar : 6 pași (cu imagini)
Construiți un dispozitiv de urmărire a ușii motorizate a hambarului …: … trageți stele, planete și alte nebuloase, cu o cameră care este. Fără Arduino, fără motoare pas cu pas, fără roți dințate, doar un simplu motor care întoarce o tijă filetată, acest dispozitiv de urmărire a ușii de hambar vă rotește camera la același ritm ca rotația planetei noastre, un