Taula de continguts:
- Pas 1: coses que necessitareu:
- Pas 2: Configuració de l'entorn Python:
- Pas 3: Python Script:
- Pas 4: Codi Arduino:
- Pas 5: Mecanisme d’inclinació panoràmica: -
- Pas 6: establir connexions:
- Pas 7: PROVES:
Vídeo: SEGUIMENT CARA AMB ARDUINO !!!: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
En un instructable anterior vaig compartir com es pot comunicar entre Arduino i Python mitjançant el mòdul 'pyserial' i controlar un LED. Si no ho heu vist, consulteu-lo aquí: COMUNICACIÓ ENTRE ARDUINO & PYTHON.
I com podeu detectar el color d’un objecte i fer-ne un seguiment a la pantalla, comproveu-ho aquí: DETECCIÓ DEL COLOR FENT OPENCV I PITÓ.
En aquest instructiu us mostraré com fer un seguiment de cares amb Arduino i Python i fer que la càmera segueixi la cara. Pot semblar difícil, però confieu en mi que no ho és, tot el que necessiteu és coneixement bàsic d’Arduino i Python.
Comencem doncs …
Pas 1: coses que necessitareu:
Els requisits són mínims. Aquí he proporcionat una llista de parts de tot el que necessiteu:
Requisit de maquinari:
- Arduino UNO (Amazon EUA / Amazon UE)
- Càmera web (Amazon EUA / Amazon UE)
- Servos x 2 (Amazon EUA / Amazon UE)
- Taula de pa (Amazon EU / Amazon EU)
- Kit d'inclinació del Servo Pan (Amazon EUA / Amazon UE)
Requisit de programari:
- Python 2.7 (s'hauria d'instal·lar, el sistema operatiu Linux sol tenir-lo preinstal·lat)
- OpenCV (Podeu descarregar-lo per separat o instal·lar-lo utilitzant 'pip install').
- pyserial (Es pot instal·lar amb pip)
- numpy.
- Haarcascade.
Després de recollir totes les coses, podem passar al pas d'instal·lació …
Pas 2: Configuració de l'entorn Python:
Instal·lació de Python:
Per tant, primer necessitem Python 2.7 en funcionament. Per fer-ho, primer descarregueu i instal·leu python 2.7.14. Per comprovar si està instal·lat correctament Aneu a: Cerca de Windows >> Escriviu "IDLE" >> Premeu Retorn. Ha d’aparèixer una petxina Python.
O
A la cerca, escriviu "CMD" i premeu Retorn per obrir el símbol del sistema. A CMD escriviu >> python i premeu Enter, s'hauria de mostrar la interfície de Python.
Si veieu un error a CMD, no us espanteu, probablement haureu d'establir la variable d'entorn. Podeu seguir aquest tutorial aquí per configurar la variable d'entorn.
Instal·lació de 'pyserial', 'OpenCV "i" numpy "a Python:
Per instal·lar aquests mòduls utilitzarem pip install, Primer obriu CMD i escriviu els codis següents: -
sèrie d'instal·lació de pip
pip install opencv-python> pip install numpy
aquestes ordres instal·laran els mòduls necessaris. Ara podem passar a la part de codificació …
Pas 3: Python Script:
Abans de començar a escriure codi, el primer que cal fer és crear una nova carpeta, ja que tot el codi s’ha d’emmagatzemar a la mateixa carpeta. Per tant, creeu una carpeta nova, anomeneu-la com vulgueu. i descarregueu "Haarcascade" des de baix i enganxeu-lo a la carpeta.
Ara obriu el bloc de notes i escriviu l'script que es mostra a continuació, deseu-lo com a 'face.py' a la mateixa carpeta que haarcascade. (Podeu descarregar el codi que he proporcionat el fitxer següent):
#importar tots els mòduls necessaris
import numpy as np import serial importation time import sys import cv2 #Setup Camí de comunicació per a arduino (en lloc de 'COM5', poseu el port al qual està connectat el vostre arduino) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Connectat a arduino …") #importing Haarcascade per a la detecció de cares face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Per capturar el flux de vídeo des de la càmera web. cap = cv2. VideoCapture (0) #Llegeix la imatge capturada, converteix-la en imatge gris i cerca cares mentre 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) faces = face_cascade.detectMultiScale (gris, 1.3) # detectar la cara i fer un rectangle al seu voltant. per a (x, y, w, h) a les cares: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = gris [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} imprimir (arr) imprimir ('X: '+ str (x)) print (' Y: '+ str (y)) print (' x + w: '+ str (x + w)) print (' y + h: '+ str (y + h)) # Centre de roi (Rectangle) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # enviament de dades a arduino print ("Centre de rectangle és:", centre) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Display the stream. cv2.imshow ('img', img) #Hit 'Esc' per finalitzar l'execució k = cv2.waitKey (30) & 0xff si k == 27: interrupció
Un cop fet això, passeu a escriure el codi per a arduino …
Pas 4: Codi Arduino:
Després que el script Python estigui llest, necessitem un esbós arduino per controlar el servo. Consulteu el codi següent, enganxeu-lo a Arduino IDE i deseu-lo com a "servo.ino" a la mateixa carpeta que face.py i haarcascade. pengeu el codi i passeu al següent pas per establir les connexions.
(Arxiu descarregable que es mostra a continuació)
#incloure
Servo servoVer; // Servo vertical Servo servoHor; // Servo horitzontal int x; int y; int prevX; int prevY; configuració nul·la () {Serial.begin (9600); servoVer.attach (5); // Connecteu el servo vertical al pin 5 servoHor.attach (6); // Connecteu el servo horitzontal 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 = mapa (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = màx (servoX, 70); servoY = min (servoY, 179); servoY = màx (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {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 (); }}}
Pas 5: Mecanisme d’inclinació panoràmica: -
He utilitzat un kit fàcilment disponible per al Pan-Tilt. Si ho desitgeu, podeu fer-ne un amb fusta / plàstic o fins i tot imprimir-ne un de 3D.
El que he utilitzat és bastant barat i molt fàcil de muntar. Tot i això, si voleu instruccions sobre com fer-ho, podeu trobar-les aquí.
Pas 6: establir connexions:
El Circuit és bastant senzill. Simplement connecteu dos servos a arduino.
- Vertical al pin 5
- Horitzontal al pin 6
- Potència a + 5V
- De terra a GND
Consulteu el diagrama del circuit per obtenir-ne referència.
Pas 7: PROVES:
- Després de fer-ho tot, l'últim que cal fer és provar si funciona. Per provar primer, assegureu-vos que els servos estan correctament connectats a arduino i que es carrega l'esbós.
- Després de carregar l'esbós, assegureu-vos de tancar l'IDE per tal que el port es pugui connectar lliurement a Python.
- Ara obriu 'face.py' amb Python IDLE i premeu 'F5' per executar el codi. La connexió a arduino trigarà uns segons i hauríeu de poder veure una finestra que transmet la càmera web. Ara el codi detectarà la vostra cara i els servos en faran un seguiment.
- El Servo s’ha de moure a mesura que moveu l’objecte. Ara només cal que connecteu la càmera als servos perquè es mogui amb els servos.
Gràcies.
Recomanat:
Rellotge i programació de seguiment d'activitats vibrants portables ATtiny85 ATtiny85 amb Arduino Uno: 4 passos (amb imatges)
Rellotge i programació de seguiment d'activitats vibrants portables ATtiny85 ATtiny85 amb Arduino Uno: Com fer que el rellotge de seguiment d'activitat portable? Es tracta d’un gadget usable dissenyat per vibrar quan detecta l’estancament. Passes la major part del temps a l’ordinador com jo? Estàs assegut durant hores sense adonar-te’n? Llavors, aquest dispositiu és f
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
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment fotosensible del cotxe: 7 passos
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment del cotxe fotosensible: dissenyat per SINONING ROBOT Podeu comprar amb el robot de seguiment El xip LM393 compara els dos fotoresistors, quan hi ha un LED de fotoresistència lateral en BLANC, el costat del motor s'aturarà immediatament, l'altre costat del motor girar, de manera que
Seguiment d'estrelles "Scotch Mount" per astrofotografia amb tecnologia Arduino: 7 passos (amb imatges)
Arduino Powered 'Scotch Mount' Star Tracker per a astrofotografia: vaig conèixer el muntatge Scotch quan era més jove i en vaig fer un amb el meu pare quan tenia 16 anys. És una manera senzilla i econòmica de començar a fer astrofotografia, que cobreix els aspectes bàsics que teniu abans. endinsar-se en les complicades qüestions del telescopi de la primera f
Sistema de seguiment de bicicletes amb alerta de Dead Man amb Sigfox: 7 passos (amb imatges)
Sistema de seguiment de bicicletes amb alerta Dead Man amb Sigfox: sistema de seguretat per a ciclistes amb funcions d’alerta de seguiment i enviament. En cas d’accident s’envia una alarma amb la posició GPS. És imprescindible la seguretat per als ciclistes, amb accidents de bicicleta de carretera o de muntanya i el més aviat possible