Tabla de contenido:
- Paso 1: Cosas que necesitará:
- Paso 2: Configurar el entorno de Python:
- Paso 3: secuencia de comandos de Python:
- Paso 4: Código Arduino:
- Paso 5: Mecanismo de giro e inclinación: -
- Paso 6: hacer conexiones:
- Paso 7: PRUEBAS:
Video: SEGUIMIENTO FACIAL USANDO ARDUINO !!!: 7 Pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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 has visto, compruébalo aquí: ¡COMUNICACIÓN ENTRE ARDUINO Y PYTHON!
Y cómo puede detectar el color de un objeto y rastrearlo en la pantalla, compruébelo aquí: DETECCIÓN DE COLOR USANDO OPENCV Y PYTHON.
En este Instructable, le mostraré cómo rastrear caras usando Arduino y Python y hacer que la cámara siga la cara. Esto puede parecer difícil, pero créame que no lo es. Todo lo que necesita es un conocimiento básico de Arduino y Python.
Entonces empecemos…
Paso 1: Cosas que necesitará:
Los requisitos son mínimos. Aquí he proporcionado una lista parcial de todo lo que necesita:
Requisito de hardware:
- Arduino UNO (Amazon EE. UU. / Amazon UE)
- Cámara web (Amazon EE. UU. / Amazon UE)
- Servos x 2 (Amazon EE. UU. / Amazon UE)
- Placa de pruebas (Amazon EE. UU. / Amazon UE)
- Kit de servo Pan Tilt (Amazon EE. UU. / Amazon UE)
Requisito de software:
- Python 2.7 (debe estar instalado, el sistema operativo Linux generalmente lo tiene preinstalado)
- OpenCV (Puede descargarlo por separado o instalarlo usando 'pip install' Explicado más adelante)
- pyserial (se puede instalar con pip)
- numpy.
- Haarcascade.
Una vez recopilado todo, podemos pasar al paso de instalación …
Paso 2: Configurar el entorno de Python:
Instalando Python:
Entonces, primero necesitamos Python 2.7 en funcionamiento. Para hacer esto, primero descargue e instale python 2.7.14. Para comprobar si está instalado correctamente, vaya a: Búsqueda de Windows >> Escriba "IDLE" >> Presione Enter. Debería aparecer un Python Shell.
O
En la búsqueda, escriba 'CMD' y presione enter para abrir el símbolo del sistema. En CMD, escriba >> python y presione enter, debería mostrarse la interfaz de Python.
Si ve un error en CMD, no se preocupe, probablemente necesite establecer la variable de entorno. Puede seguir este tutorial aquí para configurar la variable de entorno.
Instalando 'pyserial', 'OpenCV "y" numpy "en python:
Para instalar estos módulos usaremos use pip install, Primero abra CMD y escriba los siguientes códigos: -
pip instalar serie
pip install opencv-python> pip install numpy
estos comandos instalarán los módulos necesarios. Ahora podemos pasar a la parte de codificación …
Paso 3: secuencia de comandos de Python:
Antes de comenzar a escribir código, lo primero que debe hacer es crear una nueva carpeta, ya que todo el código debe almacenarse en la misma carpeta. Así que cree una nueva carpeta, asígnele el nombre que desee. y descargue el 'Haarcascade' desde abajo y péguelo en la carpeta.
Ahora abra el bloc de notas y escriba el script que se indica a continuación, guárdelo como 'face.py' en la misma carpeta que haarcascade. (Puede descargar el código que he proporcionado en el archivo a continuación):
#importar todos los módulos requeridos
import numpy as np import serial import time import sys import cv2 #Setup Ruta de comunicación para arduino (en lugar de 'COM5' coloque el puerto al que está conectado su arduino) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Conectado a arduino…") #importar el Haarcascade para la detección de rostros face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Para capturar el flujo de video desde la cámara web. cap = cv2. VideoCapture (0) # Lee la imagen capturada, conviértela a imagen gris y busca caras mientras 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (img, (250, 250), 5, (255, 255, 255), -1) gris = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) caras = face_cascade.detectMultiScale (gris, 1.3) # detecta la cara y haz un rectángulo a su alrededor. para (x, y, w, h) en caras: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = gray [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} print (arr) print ('X: '+ str (x)) print (' Y: '+ str (y)) print (' x + w: '+ str (x + w)) print (' y + h: '+ str (y + h)) # Centro de roi (Rectángulo) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # enviando datos a arduino print ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Muestra la secuencia. cv2.imshow ('img', img) # Pulse 'Esc' para finalizar la ejecución k = cv2.waitKey (30) & 0xff si k == 27: break
Una vez hecho esto, continúe escribiendo el código para arduino …
Paso 4: Código Arduino:
Después de que el script de Python esté listo, necesitamos un boceto de arduino para controlar el servo. Consulte el código a continuación, péguelo en Arduino IDE y guárdelo como 'servo.ino' en la misma carpeta que face.py y haarcascade. cargue el código y continúe con el siguiente paso para realizar las conexiones.
(Archivo descargable a continuación)
#incluir
Servo servoVer; // Vertical Servo Servo servoHor; // Horizontal Servo int x; int y; int prevX; int prevY; configuración vacía () {Serial.begin (9600); servoVer.attach (5); // Conecte el servo vertical al pin 5 servoHor.attach (6); // Conecte el servo horizontal al pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = map (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} bucle vacío () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}
Paso 5: Mecanismo de giro e inclinación: -
He utilizado un kit disponible para Pan-Tilt. Si lo desea, puede hacer uno usted mismo utilizando madera / plástico o incluso imprimir uno en 3D.
El que utilicé es bastante barato y muy fácil de montar. Sin embargo, si desea instrucciones sobre cómo hacerlo, puede encontrarlas aquí.
Paso 6: hacer conexiones:
El circuito es bastante simple. Simplemente conecte dos servos a arduino.
- Vertical al pin 5
- Horizontal al pin 6
- Potencia a + 5V
- Tierra a GND
Consulte el diagrama del circuito como referencia.
Paso 7: PRUEBAS:
- Una vez hecho todo, lo último que debe hacer es probar si funciona. Para probar primero, asegúrese de que los servos estén conectados correctamente a arduino y que el boceto esté cargado.
- Después de cargar el boceto, asegúrese de cerrar el IDE para que el puerto esté libre para conectarse a Python.
- Ahora abra 'face.py' con Python IDLE y presione 'F5' para ejecutar el código. Tomará unos segundos conectarse a arduino y luego debería poder ver una ventana que transmite la cámara web. Ahora el código detectará tu rostro y los servos lo rastrearán.
- El Servo debe moverse a medida que mueves el objeto. Ahora simplemente conecte la cámara a los servos para que se mueva junto con los servos.
Gracias.
Recomendado:
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
Dispositivo de seguimiento facial! Python y Arduino: 5 pasos
Dispositivo de seguimiento facial! Python y Arduino: 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. Entonces eso significa esto
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