Indholdsfortegnelse:

Ansigtssporingsenhed! Python og Arduino: 5 trin
Ansigtssporingsenhed! Python og Arduino: 5 trin

Video: Ansigtssporingsenhed! Python og Arduino: 5 trin

Video: Ansigtssporingsenhed! Python og Arduino: 5 trin
Video: Безымянная звезда (1 серия) (1978) фильм 2024, November
Anonim
Image
Image
Ansigtssporingsenhed! Python og Arduino
Ansigtssporingsenhed! Python og Arduino
Ansigtssporingsenhed! Python og Arduino
Ansigtssporingsenhed! Python og Arduino

Af Techovator0819 Min Youtube -kanal Følg mere af forfatteren:

IoT: Weather Box (med brugerdefinerede alarmer og timere)
IoT: Weather Box (med brugerdefinerede alarmer og timere)
IoT: Weather Box (med brugerdefinerede alarmer og timere)
IoT: Weather Box (med brugerdefinerede alarmer og timere)
Den multifunktionelle autonome robot: 'Asset'
Den multifunktionelle autonome robot: 'Asset'
Den multifunktionelle autonome robot: 'Asset'
Den multifunktionelle autonome robot: 'Asset'

Om: Jeg elsker bare at lave nye ting. Ligesom ting, der omhandler mikro-controllere, maskinteknik, kunstig intelligens, datalogi og alt det, der interesserer mig. Og her finder du alt… Mere om Techovator0819 »

Hej alle derude der læser dette instruerbare. Dette er en ansigtssporingsenhed, der fungerer på et python -bibliotek kaldet OpenCV. CV står for 'Computer Vision'. Derefter konfigurerede jeg en seriel grænseflade mellem min pc og min Arduino UNO. Så det betyder, at dette ikke kun fungerer på Python.

Denne enhed genkender dit ansigt i rammen, derefter sender den bestemte kommandoer til Arduino for at placere kameraet på en sådan måde, at det forbliver inde i rammen! Lyder fedt? Lad os da hoppe direkte ind i det.

Forbrugsvarer

1. Arduino UNO

2. 2 x Servomotorer (Alle servomotorer vil være fine, men jeg brugte Tower Pro SG90)

3. Installation af Python

4. Installation af OpenCV

5. Web-kamera

Trin 1: Installation af Python og OpenCV

Installation af Python er ret ligetil!

www.python.org/downloads/

Du kan følge ovenstående link for at downloade den python -version (Mac, Windows eller Linux), der passer bedst til dig (64 bit eller 32 bit). Resten af installationsprocessen er enkel, og du bliver guidet igennem af grænsefladen.

Når du er færdig med installationen, skal du åbne din kommandoprompt og skrive følgende:

pip installer opencv-python

Det skulle installere openCV -biblioteket. I tilfælde af fejlfinding kan du tjekke DENNE side.

Efter at have oprettet miljøet og alle forudsætninger, lad os se, hvordan vi rent faktisk kan bygge dette!

Trin 2: Hvad er Haar-lignende funktioner?

Haarlignende funktioner er funktioner i et digitalt billede. Navnet kommer fra Haar wavelets. Disse er en familie af firkantede bølger, der bruges til at identificere funktioner i et digitalt billede. Haar kaskader er dybest set en klassifikator, der hjælper os med at registrere objekter (i vores tilfælde ansigter) ved hjælp af de haar-lignende funktioner.

I vores tilfælde vil vi for enkeltheden bruge foruddannede Haar Cascades til at identificere ansigter. Du kan følge DETTE link på en github-side og downloade xml-filen til Haar Cascade.

1. Klik på 'haarcascade_frontalface_alt.xml'

2. Klik på knappen 'Raw' i øverste højre del af kodevinduet.

3. Det leder dig til en anden side med kun tekst.

4. Højreklik og tryk på 'Gem som..'

5. Gem den i den samme mappe eller mappe som den for python -koden, som du er ved at skrive.

Trin 3: Kodning i Python

import cv2

import numpy som np import seriel importtid

Vi importerer alle de biblioteker, vi har brug for.

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

Vi opretter et serielt objekt kaldet 'ard'. Vi angiver også portnavnet og BaudRate som parametre.

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

Vi skaber et andet objekt til vores Haar Cascade. Sørg for, at HaarCascade -filen forbliver i den samme mappe som dette python -program.

vid = cv2. VideoCapture (0)

Vi opretter et objekt til det, der optager video fra webkameraet. 0 som parameter betyder det første webkamera, der er tilsluttet min pc.

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

mens det er sandt:

_, frame = vid.read ()#læser den aktuelle ramme til variablen frame grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #konverterer frame -> gråtonet billede#følgende linje registrerer ansigter. #First parameter er det billede, du vil opdage på #minSize = () angiver ansigtets mindste størrelse i form af pixels #Klik på ovenstående link for at vide mere om Cascade Classification ansigter = face_cascade.detectMultiScale (grå, minSize = (80, 80), minNeighbors = 3) #A for loop til at detektere ansigterne. for (x, y, w, h) i ansigter: cv2.rektangel (ramme, (x, y), (x+w, y+h), (255, 0, 0), 2) #tegner et rektangel rundt ansigtet Xpos = x+(w/2) #c beregner X-koordinaten for ansigtets centrum. Ypos = y+(h/2) #calcualtes Y-koordinaten for ansigtets centrum, hvis Xpos> 280: #Følgende kodeblokke kontrollerer, om ansigtet er ard.write ('L'.encode ()) #on venstre, højre, top eller bund med hensyn til tiden. søvn (0,01) #center for rammen. elif Xpos 280: ard.write ('D'.code ()) 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)#viser rammen i et separat vindue. k = cv2.waitKey (1) & 0xFF hvis (k == ord ('q')): #if 'q' trykkes på tastaturet, forlader det mens loop. pause

cv2.destroyAllWindows () #lukker alle vinduer

ard.close () #lukker den serielle kommunikation

vid.release () #stopper med at modtage video fra webkameraet.

Trin 4: Programmering af Arduino

Du er velkommen til at ændre programmet i henhold til din hardwareopsætning, der passer til dine behov.

#omfatte

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

ugyldig opsætning () {

// sæt din opsætningskode her for at køre en gang: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); forsinkelse (1000); }

char input = ""; // seriel input gemmes i denne variabel

void loop () {

// sæt din hovedkode her for at køre gentagne gange: if (Serial.available ()) {// kontrollerer, om der er data i den serielle buffer input = Serial.read (); // læser dataene ind i en variabel hvis (input == 'U') {servoY.write (y+1); // justerer servovinklen i henhold til input y += 1; // opdaterer værdien af vinklen} else if (input == 'D') {servoY.write (y-1); y -= 1; } andet {servoY.write (y); } hvis (input == 'L') {servoX.write (x-1); x -= 1; } ellers hvis (input == 'R') {servoX.write (x+1); x += 1; } andet {servoX.write (x); } input = ""; // rydder variablen} // processen gentages !!:)}

Trin 5: Konklusion

Dette er en god og interaktiv måde, hvorpå du kan designe inkorporere Computer Vision i dine Arduino -projekter. Computer Vision er faktisk ret sjovt. Og jeg håber virkelig, at I kan lide det. Hvis ja, lad mig vide i kommentarerne. Og abonner venligst på min youtube kanal. På forhånd tak <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Anbefalede: