Tabla de contenido:

Dispositivo de seguimiento facial! Python y Arduino: 5 pasos
Dispositivo de seguimiento facial! Python y Arduino: 5 pasos

Video: Dispositivo de seguimiento facial! Python y Arduino: 5 pasos

Video: Dispositivo de seguimiento facial! Python y Arduino: 5 pasos
Video: Robótica con Python y Arduino 🎮🫶🏼 2024, Noviembre
Anonim
Image
Image
Dispositivo de seguimiento facial! Python y Arduino
Dispositivo de seguimiento facial! Python y Arduino
Dispositivo de seguimiento facial! Python y Arduino
Dispositivo de seguimiento facial! Python y Arduino

Por Techovator0819 Mi canal de Youtube Siga más por el autor:

IoT: Weather Box (con alarmas y temporizadores personalizados)
IoT: Weather Box (con alarmas y temporizadores personalizados)
IoT: Weather Box (con alarmas y temporizadores personalizados)
IoT: Weather Box (con alarmas y temporizadores personalizados)
El robot autónomo multifuncional: 'activo'
El robot autónomo multifuncional: 'activo'
El robot autónomo multifuncional: 'activo'
El robot autónomo multifuncional: 'activo'

Acerca de: Me encanta hacer cosas nuevas. Como cosas relacionadas con microcontroladores, ingeniería mecánica, inteligencia artificial, informática y cualquier cosa que me interese. Y aquí encontrará todas las… Más sobre Techovator0819 »

Hola a todos los que están leyendo este instructivo. Este es un dispositivo de seguimiento facial que funciona en una biblioteca de Python llamada OpenCV. CV son las siglas de 'Computer Vision'. Luego configuré una interfaz serial entre mi PC y mi Arduino UNO. Eso significa que esto no solo funciona en Python.

¡Este dispositivo reconoce tu cara en el marco, luego envía ciertos comandos al Arduino para colocar la cámara de tal manera que permanezca dentro del marco! ¿Suena bien? Vayamos directamente a él entonces.

Suministros

1. Arduino UNO

2. 2 x servomotores (cualquier servomotor estará bien, pero utilicé Tower Pro SG90)

3. Instalación de Python

4. Instalación de OpenCV

5. Cámara web

Paso 1: Instalar Python y OpenCV

¡Instalar Python es bastante sencillo!

www.python.org/downloads/

Puede seguir el enlace anterior para descargar la versión de Python (Mac, Windows o Linux) que más le convenga (64 bits o 32 bits). El resto del proceso de instalación es simple y la interfaz lo guiará.

Una vez que haya terminado la instalación, abra el símbolo del sistema y escriba lo siguiente:

pip instalar opencv-python

Eso debería instalar la biblioteca openCV. En caso de solución de problemas, puede consultar ESTA página.

Después de haber configurado el entorno y todos los requisitos previos, ¡veamos cómo podemos realmente construir esto!

Paso 2: ¿Cuáles son las características similares a las de Haar?

Las características similares a las del pelo son características de una imagen digital. El nombre proviene de las ondas de Haar. Se trata de una familia de ondas cuadradas que se utilizan para identificar características en una imagen digital. Haar cascades es básicamente un clasificador que nos ayuda a detectar objetos (en nuestro caso caras) usando características similares a haar.

En nuestro caso, por simplicidad, usaremos Haar Cascades previamente entrenados para identificar caras. Puede seguir ESTE enlace de una página de github y descargar el archivo xml para Haar Cascade.

1. Haga clic en 'haarcascade_frontalface_alt.xml'

2. Haga clic en el botón 'Raw' en la parte superior derecha de la ventana de código.

3. Lo dirigirá a otra página con solo texto.

4. Haga clic con el botón derecho y seleccione "Guardar como …".

5. Guárdelo en el mismo directorio o carpeta que el del código Python que está a punto de escribir.

Paso 3: codificación en Python

importar cv2

import numpy as np import serial import time

Importamos todas las bibliotecas que necesitamos.

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

Creamos un objeto serial llamado 'ard'. También especificamos el nombre del puerto y la velocidad en baudios como parámetros.

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

Creamos otro objeto para nuestra Haar Cascade. Asegúrese de que el archivo HaarCascade permanezca en la misma carpeta que este programa Python.

vid = cv2. VideoCapture (0)

Creamos un objeto que captura video de la webcam. 0 como parámetro significa la primera cámara web conectada a mi PC.

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

mientras que es cierto:

_, frame = vid.read () # lee el fotograma actual a la variable frame gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #convierte fotograma -> imagen en escala de grises #la siguiente línea detecta caras. # El primer parámetro es la imagen en la que desea detectar en # minSize = () especifica el tamaño mínimo de la cara en términos de píxeles #Haga clic en el enlace anterior para saber más sobre la clasificación en cascada faces = face_cascade.detectMultiScale (gray, minSize = (80, 80), minNeighbors = 3) #A para bucle para detectar las caras. para (x, y, w, h) en caras: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) # dibuja un rectángulo alrededor la cara Xpos = x + (w / 2) # calcula la coordenada X del centro de la cara. Ypos = y + (h / 2) # calcula la coordenada Y del centro de la cara si Xpos> 280: # Los siguientes bloques de código comprueban si la cara es ard.write ('L'.encode ()) #on la izquierda, derecha, arriba o abajo con respecto al time.sleep (0.01) #center del marco. 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) # muestra el marco en una ventana separada. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): # si se presiona 'q' en el teclado, sale del bucle while. rotura

cv2.destroyAllWindows () #cierra todas las ventanas

ard.close () # cierra la comunicación serial

vid.release () # detiene la recepción de video de la cámara web.

Paso 4: Programando el Arduino

Siéntase libre de modificar el programa según la configuración de su hardware que se adapte a sus necesidades.

#incluir

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

configuración vacía () {

// ponga su código de configuración aquí, para que se ejecute una vez: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); retraso (1000); }

char input = ""; // la entrada en serie se almacena en esta variable

bucle vacío () {

// ponga su código principal aquí, para que se ejecute repetidamente: if (Serial.available ()) {// comprueba si hay algún dato en el búfer serial input = Serial.read (); // lee los datos en una variable if (input == 'U') {servoY.write (y + 1); // ajusta el ángulo del servo según la entrada y + = 1; // actualiza el valor del ángulo} else if (input == 'D') {servoY.write (y-1); y - = 1; } else {servoY.write (y); } if (entrada == 'L') {servoX.write (x-1); x - = 1; } más si (entrada == 'R') {servoX.write (x + 1); x + = 1; } else {servoX.write (x); } entrada = ""; // borra la variable} // ¡¡el proceso sigue repitiéndose !!:)}

Paso 5: Conclusión

Esta es una forma agradable e interactiva a través de la cual puede diseñar e incorporar Computer Vision en sus proyectos Arduino. Computer Vision es bastante divertido. Y realmente espero que les haya gustado. Si es así, házmelo saber en los comentarios. Y suscríbete a mi canal de youtube. Gracias de antemano <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Recomendado: