Sommario:

Riconoscimento facciale Opencv: 4 passaggi
Riconoscimento facciale Opencv: 4 passaggi

Video: Riconoscimento facciale Opencv: 4 passaggi

Video: Riconoscimento facciale Opencv: 4 passaggi
Video: Riconoscimento del volto con Python e OpenCV: il tutorial completo passo dopo passo 2024, Luglio
Anonim
Riconoscimento facciale Opencv
Riconoscimento facciale Opencv

Il riconoscimento facciale è una cosa abbastanza comune al giorno d'oggi, in molte applicazioni come smartphone, molti gadget elettronici. Questo tipo di tecnologia coinvolge molti algoritmi e strumenti, ecc. che utilizza alcune piattaforme SOC integrate come il Raspberry Pi e la visione artificiale open source librerie come OpenCV, ora puoi aggiungere il riconoscimento facciale alle tue applicazioni come i sistemi di sicurezza.

In questo progetto, ti dirò come costruire un riconoscimento facciale usando un Raspberry Pi e abbiamo usato arduino+Lcd per visualizzare il nome della persona..

Passaggio 1: cose di cui hai bisogno

Cose di cui hai bisogno
Cose di cui hai bisogno

1. LAMPONE PI

2. ARDUINO UNO / NANO

DISPLAY LCD 3.16x2

4. RASPI-CAMERA / WEBcam (preferisco la webcam per risultati migliori)

Passaggio 2: Opencv-Introduzione e installazione

Opencv-Introduzione e installazione
Opencv-Introduzione e installazione

OpenCV (libreria di visione artificiale open source) è una libreria molto utile: fornisce molte funzioni utili come il riconoscimento del testo, il riconoscimento facciale, il rilevamento degli oggetti, la creazione di mappe di profondità e l'apprendimento automatico.

Questo articolo ti mostrerà come installare Opencv e altre librerie su Raspberry Pi che ti saranno utili quando esegui il rilevamento di oggetti e altri progetti. Da lì, impareremo come eseguire operazioni su immagini e video eseguendo un progetto di riconoscimento di oggetti e apprendimento automatico. Nello specifico, scriveremo un semplice codice per rilevare i volti in un'immagine.

Cos'è OpenCV?

OpenCV è una libreria di software di visione artificiale e machine learning open source. OpenCV è rilasciato con una licenza BSD che lo rende gratuito sia per uso accademico che commerciale. Ha interfacce C++, Python e Java e supporta Windows, Linux, Mac OS, iOS e Android. OpenCV è stato progettato per l'efficienza computazionale e una forte attenzione alle applicazioni in tempo reale.

Come installare OpenCV su un Raspberry Pi?

Per installare OpenCV, dobbiamo avere installato Python. Poiché i Raspberry Pi sono precaricati con Python, possiamo installare direttamente OpenCV.

Digita i comandi seguenti per assicurarti che il tuo Raspberry Pi sia aggiornato e per aggiornare i pacchetti installati sul tuo Raspberry Pi alle ultime versioni.

sudo apt-get updateudo apt-get upgrade

Digita i seguenti comandi nel terminale per installare i pacchetti richiesti per OpenCV sul tuo Raspberry Pi.

sudo apt install libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test libqt4-test

Digita il seguente comando per installare OpenCV 3 per Python 3 sul tuo Raspberry Pi, pip3 ci dice che OpenCV verrà installato per Python 3.

sudo pip3 install opencv-contrib-python libwebp6

Ora, OpenCV dovrebbe essere installato.

(se si sono verificati errori: puoi ancora farlo seguendo il link sottostante

https://www.instructables.com/id/Raspberry-Pi-Hand…)

Ora non avere fretta, dobbiamo verificare se è stato installato correttamente o meno

Metti alla prova il tuo opencv con:

1. vai al tuo terminale e digita "python"

2.quindi digita "import cv2".

3.quindi digita " cv2._version_".

quindi installa queste librerie

pip3 installa python-numpy

pip3 installa python-matplotlib

Codice di prova per rilevare i volti in un'immagine:

importa cv2

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml");

image = cv2.imread('nome del tuo file') #esempio cv2.imread('home/pi/Desktop/nomefile.jpg')

otterrai l'output come se si formassero scatole quadrate sui volti delle persone che sono nella foto.

Passaggio 3: rilevamento e riconoscimento del volto in un video in tempo reale

importa cv2

importa numpy come np

importare il sistema operativo

importazione seriale

ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1) # /dev/ttyACM0 potrebbe cambiare nel tuo caso, dipende dall'arduino

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2. CascadeClassifier(cascadePath)

riconoscitore=cv2.face.createLBPHFaceRecognizer()

immagini=

etichette=

per il nome del file in os.listdir('Dataset'):

im=cv2.imread('Dataset/'+nomefile, 0)

immagini.append(im)

label.append(int(filename.split('.')[0][0]))

#stampa nomefile

nomi_file=open('etichette.txt')

nomi=nome_file.read().split('\n')

riconosciutor.train(immagini, np.array(etichette))

stampa 'Allenamento terminato… '

carattere = cv2. FONT_

HERSHEY_SIMPLEXcap=cv2. VideoCapture(1) # il tuo dispositivo video

lastRes=''count=0

mentre (1):

_, frame=cap.read()

grigio=cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)

facce = faceCascade.detectMultiScale(grigio, 1.3, 5)

conteggio+=1

per (x, y, w, h) nelle facce:

cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

if count>20: res=names[recognizer.predict(gray[y:y+h, x:x+w])-1]

if res!=lastRes:

lastRes=res

stampa lastRes

ser.write(lastRes)

conteggio=0

rottura

cv2.imshow('cornice', cornice)

k = 0xFF & cv2.waitKey(10)

se k == 27:

rottura

cap.release()

ser.close()

cv2.destroyAllWindows()

Passaggio 4: esecuzione del codice

Esecuzione del codice
Esecuzione del codice

1. Scarica i file allegati nel passaggio precedente

2. copia le tue foto grigie (6 immagini/campioni…..) nella cartella del set di dati

1. Tom Cruise 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 (numero di immagine del set di dati per una cartella del set di dati più aperta)

2. Brad Pitt-2_1, 2_2, 2_3, 2_4, 2_5, 2_6

3. Leone-3_1, 3_2, 3_3, 3_4, 3_5, 3_6

4. Ironman4_1, 4_2, 4_3, 4_4, 4_5, 4_6

come sopra puoi aggiungere le etichette per le rispettive persone,

quindi se il pi greco rileva qualsiasi volto tra 1_1, 1_2, 1_3, 1_4, 1_5, 1_6, allora è stato etichettato come Tom Cruise, quindi fai attenzione durante il caricamento delle foto………………

e quindi collega il tuo arduino al tuo Raspberry Pi e apporta le modifiche nel main.py codeer = serial. Serial('/dev/ttyACM0', 9600, timeout=1) 3.metti tutti i file scaricati (main.py, cartella dataset, haarcascade_frontalface_default.xml in una cartella.)

3. Ora apri Raspi-terminal e esegui il tuo codice con "sudo python main.py"

Consigliato: