Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Installation af Python og OpenCV
- Trin 2: Hvad er Haar-lignende funktioner?
- Trin 3: Kodning i Python
- Trin 4: Programmering af Arduino
- Trin 5: Konklusion
Video: Ansigtssporingsenhed! Python og Arduino: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Af Techovator0819 Min Youtube -kanal Følg mere af forfatteren:
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:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Ansigtsgenkendelse og identifikation - Arduino Face ID ved hjælp af OpenCV Python og Arduino .: 6 trin
Ansigtsgenkendelse og identifikation | Arduino Face ID Brug af OpenCV Python og Arduino .: Ansigtsgenkendelse AKA face ID er i dag en af de vigtigste funktioner på mobiltelefoner. Så jeg havde et spørgsmål " kan jeg have et ansigts -id til mit Arduino -projekt " og svaret er ja … Min rejse startede som følger: Trin 1: Adgang til vi
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
RC -sporet robot ved hjælp af Arduino - Trin for trin: 3 trin
RC Tracked Robot Using Arduino - Step by Step: Hey guys, I are back with another cool Robot chassis from BangGood. Håber du har gennemgået vores tidligere projekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms og The Badland Braw
DIY Arduino robotarm, trin for trin: 9 trin
DIY Arduino robotarm, trin for trin: Denne vejledning lærer dig, hvordan du bygger en robotarm selv