Sommario:
- Passaggio 1: rilevamento del volto in un video in tempo reale
- Passaggio 2: addestrare le immagini di esempio
- Passaggio 3: riconoscimento dei volti
Video: Rilevamento, addestramento e riconoscimento dei volti Opencv: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
OpenCV è una libreria di visione artificiale open source molto popolare per l'esecuzione di attività di elaborazione delle immagini di base come sfocatura, fusione di immagini, miglioramento dell'immagine e della qualità video, sogliatura ecc. Oltre all'elaborazione delle immagini, fornisce vari deep learning pre-addestrati modelli che possono essere utilizzati direttamente per risolvere semplici compiti a portata di mano.
per l'installazione di opencv usa questo link
www.instructables.com/id/Opencv-and-Python…
Passaggio 1: rilevamento del volto in un video in tempo reale
puoi cercare su Google molti programmi di rilevamento dei volti e i volti rilevati dovrebbero essere salvati in una cartella per ulteriori operazioni di elaborazione delle immagini come l'addestramento e l'etichettatura. raccoglieremo 30 campioni
importa cv2
importa numpy come np
import os import sys
fotocamera = cv2. VideoCapture(0)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #aggiungi il percorso del tuo file haarcascade
name = raw_input("Come si chiama?")
#tutti i file verranno salvati nella cartella Utenti/prasad/Documenti/immagini
dirName = "/Users/prasad/Documents/images/" + name
print(dirName) if not os.path.exists(dirName): os.makedirs(dirName) print("Directory creata") else: print("Il nome esiste già") sys.exit()
conteggio = 1
#raccoglieremo 30 campioni
mentre conta 30: break # frame = frame.array gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, 1.5, 5) for (x, y, w, h) in faces: roiGray = gray[y:y+h, x:x+w] fileName = dirName + "/" + name + str(count) + ".jpg" cv2.imwrite(fileName, roiGray) cv2.imshow("face", roiGray) cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count += 1 cv2.imshow('frame', frame) key = cv2.waitKey(1)
se chiave == 27:
rottura
#fotocamera.rilascia()
cv2.destroyAllWindows()
Passaggio 2: addestrare le immagini di esempio
Dopo che il rilevamento dei volti è stato completato, possiamo iniziare ad addestrare le immagini
import osimport numpy as np from PIL import Image import cv2 import pickle #import serial
#ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")
riconoscitore = cv2.face. LBPHFaceRecognizer_create()
baseDir = os.path.dirname(os.path.abspath(_file_))
#addestrare le immagini nella cartella delle immagini
imageDir = os.path.join(baseDir, "images")
idcorrente = 1
labelIds = {} yLabels = xTrain = #ser.write("Training…..".encode())
per root, dirs, file in os.walk(imageDir):
print(root, dirs, files) per file in files: print(file) if file.endswith("png") o file.endswith("jpg"): path = os.path.join(root, file) label = os.path.basename(root) print(label)
se non etichetta in labelIds:
labelIds[label] = currentId print(labelIds) currentId += 1
id_ = labelIds[etichetta]
pilImage = Image.open(path).convert("L") imageArray = np.array(pilImage, "uint8") faces = faceCascade.detectMultiScale(imageArray, scaleFactor=1,1, minNeighbors=5)
per (x, y, w, h) nelle facce:
roi = imageArray[y:y+h, x:x+w] xTrain.append(roi) yLabels.append(id_)
con open("etichette", "wb") come f:
pickle.dump(labelIds, f) f.close()
riconosciutor.train(xTrain, np.array(yLabels))
riconoscer.save("trainer.yml") print(labelIds)
Passaggio 3: riconoscimento dei volti
dopo che la formazione è terminata, ora puoi eseguire il codice seguente in modo che inizi a riconoscere i tuoi volti addestrati
import osos.environ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep
con open('labels', 'rb') come f:
dicti = sottaceto.load(f) f.close()
fotocamera = cv2. VideoCapture(0)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")
riconoscitore = cv2.face. LBPHFaceRecognizer_create() riconoscitore.read("trainer.yml")
carattere = cv2. FONT_HERSHEY_SIMPLEX
ultimo=''
#for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
while True: ret, frame = camera.read() gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5) for (x, y, w, h) in facce: roiGray = grigio[y:y+h, x:x+w]
id_, conf = riconoscitore.predict(roiGray)
per nome, valore in dicti.items():
if value == id_: print(name) cv2.putText(frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) if name!=last: last= nome se conf <= 70: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('cornice', cornice)
chiave = cv2.waitKey(1)
se chiave == 27:
break cv2.destroyAllWindows()
Consigliato:
Smart Watchz con rilevamento dei sintomi della corona e registrazione dei dati: 10 passaggi
Smart Watchz con rilevamento dei sintomi della corona e registrazione dei dati: questo è uno smartwatch con rilevamento dei sintomi della corona che utilizza LM35 e accelerometro con registrazione dei dati sul server. Rtc viene utilizzato per mostrare l'ora e sincronizzarsi con il telefono e utilizzarlo per la registrazione dei dati. Esp32 è usato come un cervello con controller corteccia con Blue
Robot per il riconoscimento dei segnali stradali Raspberry Pi 4: 6 passaggi
Robot per il riconoscimento dei segnali stradali Raspberry Pi 4: questo istruibile si basa sul mio progetto universitario. L'obiettivo era creare un sistema in cui una rete neurale analizzasse un'immagine e poi, in base al riconoscimento, dirà a un robot arduino di spostarsi attraverso Ros. Ad esempio se viene riconosciuto un segnale di svolta a destra
Il nuovo giorno dei sensori di riconoscimento gestuale DF: 5 passaggi
Il nuovo giorno dei sensori di riconoscimento dei gesti DF: un paio di giorni fa ho ricevuto un sensore di riconoscimento dei gesti, come mostra l'immagine. L'ho usato per un paio di giorni, sono abbastanza sicuro che questo Gravity: Gesture & Touch Sensor è un lavoro classico! Riconoscimento gestuale, che arriva sempre con la fantascienza, cool
Rilevamento dei volti in tempo reale sul RaspberryPi-4: 6 passaggi (con immagini)
Rilevamento del volto in tempo reale su RaspberryPi-4: In questo Instructable eseguiremo il rilevamento del volto in tempo reale su Raspberry Pi 4 con Shunya O/S utilizzando la libreria Shunyaface. Puoi ottenere un frame rate di rilevamento di 15-17 sul RaspberryPi-4 seguendo questo tutorial
Rilevamento facciale+riconoscimento: 8 passaggi (con immagini)
Rilevamento facciale + riconoscimento: questo è un semplice esempio di esecuzione del rilevamento e riconoscimento del volto con OpenCV da una fotocamera. NOTA: HO REALIZZATO QUESTO PROGETTO PER IL CONCORSO DI SENSORI E HO UTILIZZATO LA FOTOCAMERA COME SENSORE PER TRACCIARE E RICONOSCERE I VOLTI. Quindi, il nostro obiettivo In questa sessione, 1. Installa Anaconda