Taula de continguts:

Dispositiu de seguiment facial Python i Arduino: 5 passos
Dispositiu de seguiment facial Python i Arduino: 5 passos

Vídeo: Dispositiu de seguiment facial Python i Arduino: 5 passos

Vídeo: Dispositiu de seguiment facial Python i Arduino: 5 passos
Vídeo: Суп на Всю Семью! РАССОЛЬНИК в КАЗАНЕ! КАК ПРИГОТОВИТЬ 2024, De novembre
Anonim
Image
Image
Dispositiu de seguiment facial Python i Arduino
Dispositiu de seguiment facial Python i Arduino
Dispositiu de seguiment facial. Python i Arduino
Dispositiu de seguiment facial. Python i Arduino

Per Techovator0819 El meu canal de Youtube Segueix-ne més per l'autor:

IoT: Weather Box (amb alarmes i temporitzadors personalitzats)
IoT: Weather Box (amb alarmes i temporitzadors personalitzats)
IoT: Weather Box (amb alarmes i temporitzadors personalitzats)
IoT: Weather Box (amb alarmes i temporitzadors personalitzats)
El robot autònom multifuncional: "Actiu"
El robot autònom multifuncional: "Actiu"
El robot autònom multifuncional: "Actiu"
El robot autònom multifuncional: "Actiu"

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: