Taula de continguts:
- Subministraments
- Pas 1: Instal·lació de Python i OpenCV
- Pas 2: Quines són les funcions semblants a Haar?
- Pas 3: Codificació a Python
- Pas 4: Programació de l'Arduino
- Pas 5: Conclusió
Vídeo: Dispositiu de seguiment facial Python i Arduino: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Per Techovator0819 El meu canal de Youtube Segueix-ne més per l'autor:
Quant a: M’encanta fer coses noves. Com coses relacionades amb microcontroladors, enginyeria mecànica, intel·ligència artificial, informàtica i qualsevol cosa que m’interessi. I aquí trobareu tots els … Més informació sobre Techovator0819 »
Hola a tothom que llegeix aquest instructiu. Es tracta d’un dispositiu de seguiment de cares que funciona en una biblioteca de python anomenada OpenCV. CV significa "Visió per ordinador". Després he configurat una interfície sèrie entre el meu PC i el meu Arduino UNO. Per tant, això significa que això no només funciona a Python.
Aquest dispositiu reconeix la vostra cara al marc i, a continuació, envia certes ordres a l'Arduino per col·locar la càmera de manera que quedi dins del marc. Sona genial? Saltem-hi ara mateix.
Subministraments
1. Arduino UNO
2. 2 servomotors (els servomotors estaran bé, però he utilitzat Tower Pro SG90)
3. Instal·lació de Python
4. Instal·lació d'OpenCV
5. Càmera web
Pas 1: Instal·lació de Python i OpenCV
Instal·lar Python és força senzill.
www.python.org/downloads/
Podeu seguir l'enllaç anterior per descarregar la versió de Python (Mac, Windows o Linux) que més us convingui (64 bits o 32 bits). La resta del procés d’instal·lació és senzill i us guiarà per la interfície.
Un cop hàgiu acabat la instal·lació, obriu el símbol del sistema i escriviu el següent:
instal·lar pip opencv-python
Això hauria d’instal·lar la biblioteca openCV. En cas de resolució de problemes, podeu consultar AQUESTA pàgina.
Després d'haver configurat el medi ambient i tots els requisits previs, vegem com podem construir-ho realment.
Pas 2: Quines són les funcions semblants a Haar?
Les funcions semblants a Haar són les característiques d’una imatge digital. El nom prové de les ondetes de Haar. Es tracta d'una família d'ones de forma quadrada que s'utilitzen per identificar les característiques d'una imatge digital. Haar cascades és bàsicament un classificador que ens ajuda a detectar objectes (en el nostre cas cares) mitjançant les característiques semblants a haar.
En el nostre cas, per simplificar, utilitzarem Haar Cascades prèviament entrenades per identificar les cares. Podeu seguir AQUEST enllaç d’una pàgina de github i descarregar el fitxer xml de Haar Cascade.
1. Feu clic a "haarcascade_frontalface_alt.xml"
2. Feu clic al botó "Raw" a la part superior dreta de la finestra del codi.
3. Us dirigirà a una altra pàgina amb només text.
4. Feu clic amb el botó dret i premeu "Desa com a".
5. Deseu-lo al mateix directori o carpeta que el codi Python que esteu escrivint.
Pas 3: Codificació a Python
importar cv2
importa numpy com a temps d'importació en sèrie d'importació np
Importem totes les biblioteques que necessitem.
ard = serial. Serial ("COM3", 9600)
Creem un objecte en sèrie anomenat "ard". També especifiquem el nom del port i el BaudRate com a paràmetres.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Creem un altre objecte per a la nostra cascada Haar. Assegureu-vos que el fitxer HaarCascade romangui a la mateixa carpeta que aquest programa python.
vid = cv2. VideoCapture (0)
Creem un objecte que captura el vídeo de la càmera web. 0 com a paràmetre significa la primera càmera web connectada al meu PC.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
mentre que és cert:
_, frame = vid.read () # llegeix el frame actual al frame variable gris = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #converts frame -> imatge en escala de grisos # la línia següent detecta les cares. #Primer paràmetre és la imatge en què voleu detectar el # minSize = () especifica la mida mínima de la cara en termes de píxels # Feu clic a l'enllaç anterior per obtenir més informació sobre la classificació en cascada faces = face_cascade.detectMultiScale (gris, minSize = (80, 80), minNeighbors = 3) #A per a bucle per detectar les cares. per a (x, y, w, h) a les cares: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) # dibuixa un rectangle al voltant la cara Xpos = x + (w / 2) #calcula la coordenada X del centre de la cara. Ypos = y + (h / 2) #calcualitza la coordenada Y del centre de la cara si Xpos> 280: # Els següents blocs de codi comproven si la cara és ard.write ('L'.encode ()) #on l'esquerra, la dreta, la part superior o la inferior respecte al temps.sleep (0,01) #centre del marc. 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) # mostra el marc en una finestra independent. k = cv2.waitKey (1) & 0xFF si (k == ord ('q')): #si 'q' es prem al teclat, surt del bucle while. trencar
cv2.destroyAllWindows () # tanca totes les finestres
ard.close () # tanca la comunicació en sèrie
vid.release () # deixa de rebre vídeo de la càmera web.
Pas 4: Programació de l'Arduino
No dubteu a modificar el programa segons la configuració del maquinari que s'adapti a les vostres necessitats.
#incloure
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
configuració nul·la () {
// poseu aquí el vostre codi de configuració per executar-lo una vegada: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); retard (1000); }
char input = ""; // l'entrada en sèrie s'emmagatzema en aquesta variable
bucle buit () {
// poseu aquí el vostre codi principal per executar-lo repetidament: if (Serial.available ()) {// comprova si hi ha dades a l'entrada del buffer serial = Serial.read (); // llegeix les dades en una variable if (input == 'U') {servoY.write (y + 1); // ajusta l’angle del servo segons l’entrada y + = 1; // actualitza el valor de l'angle} else if (input == 'D') {servoY.write (y-1); y - = 1; } else {servoY.write (y); } if (entrada == 'L') {servoX.write (x-1); x - = 1; } else if (entrada == 'R') {servoX.write (x + 1); x + = 1; } else {servoX.write (x); } entrada = ""; // esborra la variable} // el procés es repeteix !!:)}
Pas 5: Conclusió
Aquesta és una manera atractiva i interactiva a través de la qual podeu dissenyar incorporar Visió per Computador als vostres projectes Arduino. La visió per ordinador és realment molt divertit. I espero que us hagi agradat. Si és així, feu-m'ho saber als comentaris. I subscriu-te al meu canal de youtube. Gràcies per endavant <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Recomanat:
Seguiment i seguiment de botigues petites: 9 passos (amb imatges)
Track & trace per a botigues petites: es tracta d’un sistema dissenyat per a petites botigues que se suposa que es munta en bicicletes elèctriques o patinets electrònics per a lliuraments a curt abast, per exemple, una fleca que vulgui lliurar pastes. Què significa Track and Trace? Track and trace és un sistema utilitzat per ca
Dispositiu de seguretat per a dones amb seguiment GPS i alertes mitjançant Arduino: 6 passos
Dispositiu de seguretat per a dones amb seguiment i alertes GPS mitjançant Arduino: amb tota la tecnologia disponible en els darrers temps, no és difícil crear un dispositiu de seguretat per a dones que no només generi una alarma d’emergència, sinó que també enviï un missatge als vostres amics, familiars. , o persona interessada. Aquí construirem una banda
Seguiment facial i detecció de somriures: robots de Halloween: 8 passos (amb imatges)
Seguiment de cares i detecció de somriures de robots de Halloween: arriba Halloween! Vam decidir construir alguna cosa divertida. Coneix els robots Ghosty i Skully. Poden seguir la teva cara i saben quan somrius per riure amb tu! Aquest projecte és un altre exemple d’utilitzar l’aplicació iRobbie que converteix l’iPhone en int
Pistola de seguiment facial: 4 passos
Face Tracking Gun: aquest projecte és una ampliació del projecte de pistola de filferro làser que es mostra aquí - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS L'única diferència és que l'arma no serà activada per làser sinó per
Robot de petició amb control i seguiment facial per controlador Xbox - Arduino: 9 passos (amb imatges)
Robot de mendicitat amb control i seguiment facial per controlador Xbox - Arduino: fabricarem un robot de mendicitat. Aquest robot intentarà irritar o cridar l'atenció de les persones que passen. Detectarà les seves cares i intentarà disparar-los amb làser. Si doneu una moneda al robot, ell cantarà una cançó i ballarà. El robot necessitarà un