Tabla de contenido:
- Suministros
- Paso 1: Instalar Python y OpenCV
- Paso 2: ¿Cuáles son las características similares a las de Haar?
- Paso 3: codificación en Python
- Paso 4: Programando el Arduino
- Paso 5: Conclusión
Video: Dispositivo de seguimiento facial! Python y Arduino: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Por Techovator0819 Mi canal de Youtube Siga más por el autor:
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:
SEGUIMIENTO FACIAL USANDO ARDUINO !!!: 7 Pasos
SEGUIMIENTO FACIAL USANDO ARDUINO !!!: En un instructivo anterior, compartí cómo puede comunicarse entre Arduino y Python usando el módulo 'pyserial' y controlar un LED. Si no lo ha visto, compruébelo aquí: COMUNICACIÓN ENTRE ARDUINO & PYTHON! ¿Y cómo se puede detectar el color de
Kits de coche de seguimiento de robot inteligente de bricolaje Seguimiento de coche fotosensible: 7 pasos
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOTPuedes comprar desde el robot de seguimiento carTheoryLM393 chip compara los dos fotorresistores, cuando hay un fotorresistor LED en BLANCO, el lado del motor se detendrá inmediatamente, el otro lado del motor girar, de modo que
Seguimiento facial y detección de sonrisas Robots de Halloween: 8 pasos (con imágenes)
Seguimiento facial y detección de sonrisas Robots de Halloween: ¡Se acerca Halloween! Decidimos construir algo genial. Conoce a los robots Ghosty y Skully. ¡Pueden seguir tu rostro y saben cuándo estás sonriendo para reírse contigo! Este proyecto es otro ejemplo del uso de la aplicación iRobbie que convierte iPhone int
Pistola de seguimiento facial: 4 pasos
Face Tracking Gun: este proyecto es una expansión del proyecto de pistola de alambre de disparo láser que se muestra aquí: https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? PASOS TODOS La única diferencia es que la pistola no se disparará con láser sino con
Robot de mendicidad con seguimiento facial y control por controlador Xbox - Arduino: 9 pasos (con imágenes)
Robot de mendicidad con seguimiento facial y control por controlador Xbox - Arduino: Vamos a hacer un robot de mendicidad. Este robot intentará irritar o llamar la atención de las personas que pasan. Detectará sus rostros e intentará dispararles láser. Si le das una moneda al robot, cantará una canción y bailará. El robot necesitará un