Cuprins:

Dispozitiv de urmărire a feței! Python și Arduino: 5 pași
Dispozitiv de urmărire a feței! Python și Arduino: 5 pași

Video: Dispozitiv de urmărire a feței! Python și Arduino: 5 pași

Video: Dispozitiv de urmărire a feței! Python și Arduino: 5 pași
Video: Cum sa nu esuezi in IT | Live in Comunitate 2024, Noiembrie
Anonim
Image
Image
Dispozitiv de urmărire a feței! Python și Arduino
Dispozitiv de urmărire a feței! Python și Arduino
Dispozitiv de urmărire a feței! Python și Arduino
Dispozitiv de urmărire a feței! Python și Arduino

De Techovator0819 Canalul meu Youtube Urmăriți mai multe de la autor:

IoT: casetă meteo (cu alarme și temporizatoare personalizate)
IoT: casetă meteo (cu alarme și temporizatoare personalizate)
IoT: casetă meteo (cu alarme și temporizatoare personalizate)
IoT: casetă meteo (cu alarme și temporizatoare personalizate)
Robotul autonom multifuncțional: „Activ”
Robotul autonom multifuncțional: „Activ”
Robotul autonom multifuncțional: „Activ”
Robotul autonom multifuncțional: „Activ”

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: