Sommario:

Dispositivo di tracciamento del viso! Python e Arduino: 5 passaggi
Dispositivo di tracciamento del viso! Python e Arduino: 5 passaggi

Video: Dispositivo di tracciamento del viso! Python e Arduino: 5 passaggi

Video: Dispositivo di tracciamento del viso! Python e Arduino: 5 passaggi
Video: 3D Tracking per Arduino, Raspberry, Windows e Mac 2024, Novembre
Anonim
Image
Image
Dispositivo di tracciamento del viso! Python e Arduino
Dispositivo di tracciamento del viso! Python e Arduino
Dispositivo di tracciamento del viso! Python e Arduino
Dispositivo di tracciamento del viso! Python e Arduino

Di Techovator0819Il mio canale YoutubeSegui di più dell'autore:

IoT: Weather Box (con allarmi e timer personalizzati)
IoT: Weather Box (con allarmi e timer personalizzati)
IoT: Weather Box (con allarmi e timer personalizzati)
IoT: Weather Box (con allarmi e timer personalizzati)
Il Robot Autonomo multifunzionale: 'Asset'
Il Robot Autonomo multifunzionale: 'Asset'
Il Robot Autonomo multifunzionale: 'Asset'
Il Robot Autonomo multifunzionale: 'Asset'

A proposito: mi piace fare cose nuove. Come le cose che riguardano i microcontrollori, l'ingegneria meccanica, l'intelligenza artificiale, l'informatica e tutto ciò che mi interessa. E qui troverai tutte le… Maggiori informazioni su Techovator0819 »

Ciao a tutti là fuori che leggono questo istruibile. Questo è un dispositivo di tracciamento del viso che funziona su una libreria Python chiamata OpenCV. CV sta per 'Computer Vision'. Quindi ho impostato un'interfaccia seriale tra il mio PC e il mio Arduino UNO. Quindi questo significa che questo non funziona solo su Python.

Questo dispositivo riconosce il tuo viso nell'inquadratura, quindi invia determinati comandi all'Arduino per posizionare la fotocamera in modo tale che rimanga all'interno dell'inquadratura! Figo? Allora saltiamoci dentro.

Forniture

1. Arduino UNO

2. 2 x servomotori (qualsiasi servomotore andrà bene, ma ho usato Tower Pro SG90)

3. Installazione di Python

4. Installazione di OpenCV

5. Fotocamera Web

Passaggio 1: installazione di Python e OpenCV

L'installazione di Python è piuttosto semplice!

www.python.org/downloads/

Puoi seguire il link sopra per scaricare la versione Python (Mac, Windows o Linux) più adatta a te (64 bit o 32 bit). Il resto del processo di installazione è semplice e sarai guidato dall'interfaccia.

Al termine dell'installazione, apri il prompt dei comandi e digita quanto segue:

pip install opencv-python

Questo dovrebbe installare la libreria openCV. In caso di problemi, puoi controllare QUESTA pagina.

Dopo aver impostato l'ambiente e tutti i prerequisiti, vediamo come possiamo effettivamente costruirlo!

Passaggio 2: quali sono le funzionalità simili a Haar?

Le caratteristiche simili a Haar sono caratteristiche di un'immagine digitale. Il nome deriva da Haar wavelets. Si tratta di una famiglia di onde quadrate che vengono utilizzate per identificare le caratteristiche di un'immagine digitale. Haar cascate è fondamentalmente un classificatore che ci aiuta a rilevare gli oggetti (nel nostro caso i volti) utilizzando le caratteristiche simili a haar.

Nel nostro caso, per semplicità, utilizzeremo Haar Cascade pre-addestrato per identificare i volti. Puoi seguire QUESTO link di una pagina github e scaricare il file xml per Haar Cascade.

1. Fare clic su "haarcascade_frontalface_alt.xml"

2. Fare clic sul pulsante "Raw" nella parte in alto a destra della finestra del codice.

3. Ti indirizzerà a un'altra pagina con solo testo.

4. Fare clic con il pulsante destro del mouse e selezionare "Salva con nome…"

5. Salvalo nella stessa directory o cartella del codice Python che stai per scrivere.

Passaggio 3: codifica in Python

importa cv2

import numpy as np import serial import time

Importiamo tutte le librerie di cui abbiamo bisogno.

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

Creiamo un oggetto seriale chiamato 'ard'. Specifichiamo anche il Port Name e il BaudRate come parametri.

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

Creiamo un altro oggetto per la nostra Haar Cascade. Assicurati che il file HaarCascade rimanga nella stessa cartella di questo programma Python.

vid = cv2. VideoCapture(0)

Creiamo un oggetto che cattura video dalla webcam. 0 come parametro indica la prima web cam collegata al mio PC.

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

mentre vero:

_, frame = vid.read()#legge il frame corrente nella variabile frame gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#converte frame -> immagine in scala di grigi #la riga seguente rileva i volti. #Il primo parametro è l'immagine su cui si desidera rilevare su #minSize=() specifica la dimensione minima del viso in termini di pixel #Fai clic sul collegamento sopra per saperne di più sulla Classificazione a cascata faces = face_cascade.detectMultiScale(grigio, minSize =(80, 80), minNeighbors=3) #A ciclo for per rilevare le facce. for (x, y, w, h) nelle facce: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#disegna un rettangolo intorno la faccia Xpos = x+(w/2)#calcola la coordinata X del centro della faccia. Ypos = y+(h/2)#calcola la coordinata Y del centro della faccia se Xpos > 280: #I seguenti blocchi di codice controllano se la faccia è ard.write('L'.encode()) #on sinistra, destra, in alto o in basso rispetto al time.sleep(0.01) #center del frame. 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)#visualizza il frame in una finestra separata. k = cv2.waitKey(1)&0xFF if(k == ord('q')): #se si preme 'q' sulla tastiera, si esce dal ciclo while. rottura

cv2.destroyAllWindows() #chiude tutte le finestre

ard.close() #chiude la comunicazione seriale

vid.release() #smette di ricevere video dalla web cam.

Passaggio 4: programmazione di Arduino

Sentiti libero di modificare il programma secondo la tua configurazione hardware in base alle tue esigenze.

#includere

Servo servoX;

Servo servoY;

intero x = 90;

int y = 90;

void setup() {

// inserisci qui il tuo codice di installazione, da eseguire una volta: Serial.begin(9600); servoX.attach(9); servoY.attach(10); servoX.write(x); servoY.write(y); ritardo(1000); }

char input = ""; //l'input seriale è memorizzato in questa variabile

ciclo vuoto() {

// inserisci qui il tuo codice principale, per eseguirlo ripetutamente: if(Serial.available()){ //verifica se ci sono dati nel buffer seriale input = Serial.read(); //legge i dati in una variabile if(input == 'U'){ servoY.write(y+1); //regola l'angolo del servo in base all'ingresso y += 1; //aggiorna il valore dell'angolo } else if(input == 'D'){ servoY.write(y-1); y -= 1; } else{ servoY.write(y); } if(input == 'L'){ servoX.write(x-1); x-= 1; } else if(input == 'R'){ servoX.write(x+1); x += 1; } else{ servoX.write(x); } ingresso = ""; //cancella la variabile } //il processo continua a ripetersi!!:) }

Passaggio 5: conclusione

Questo è un modo simpatico e interattivo attraverso il quale puoi progettare incorporare Computer Vision nei tuoi progetti Arduino. Computer Vision è in realtà piuttosto divertente. E spero davvero che vi sia piaciuto. Se sì, fatemelo sapere nei commenti. E per favore iscriviti al mio canale youtube. Grazie in anticipo <3<3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Consigliato: