Indholdsfortegnelse:

Opencv ansigtsregistrering, træning og genkendelse: 3 trin
Opencv ansigtsregistrering, træning og genkendelse: 3 trin

Video: Opencv ansigtsregistrering, træning og genkendelse: 3 trin

Video: Opencv ansigtsregistrering, træning og genkendelse: 3 trin
Video: Face recognition in real-time | with Opencv and Python 2024, Juli
Anonim
Opencv ansigtsregistrering, træning og genkendelse
Opencv ansigtsregistrering, træning og genkendelse

OpenCV er et open source computer vision-bibliotek, som er meget populært til at udføre grundlæggende billedbehandlingsopgaver som sløring, billedblanding, forbedring af billede samt videokvalitet, tærskelværdi osv. Ud over billedbehandling giver det forskellige forududdannede dybe læringer modeller, der kan bruges direkte til at løse simple opgaver.

til opencv -installation brug dette link

www.instructables.com/id/Opencv-and-Python…

Trin 1: Registrering af ansigt i en video i realtid

du kan søge på google efter mange ansigtsgenkendelsesprogrammer, og de registrerede ansigter skal gemmes i en mappe til yderligere billedbehandling, f.eks. træning og mærkning. vi skal indsamle 30 prøver

import cv2

import numpy som np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #tilføj din harcascade filsti

name = raw_input ("Hvad er hans/hendes navn?")

#alle filerne gemmes under mappen Users/prasad/Documents/images

dirName = "/Users/prasad/Documents/images/" + navn

print (dirName) hvis ikke os.path.exists (dirName): os.makedirs (dirName) print ("Directory oprettet") else: print ("Navn findes allerede") sys.exit ()

tæl = 1

#vi vil indsamle 30 prøver

mens tælling 30: break # frame = frame.array grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) ansigter = faceCascade.detectMultiScale (grå, 1,5, 5) for (x, y, w, h) i ansigter: roiGray = grå [y: y + h, x: x + w] fileName = dirName + "/" + navn + str (count) + ".jpg" cv2.imwrite (filnavn, roiGray) cv2.imshow ("ansigt", roiGray) cv2.rektangel (ramme, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

hvis nøgle == 27:

pause

#camera.release ()

cv2.destroyAllWindows ()

Trin 2: Træning af dine prøvebilleder

Efter ansigtsgenkendelse var afsluttet, kan vi gå til træning af billederne

import osimport numpy as np fra PIL import Billede import cv2 import pickle #import serial

#ser = serial. Serial ('/dev/ttyACM0', 9600, timeout = 1)

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

anerkender = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ fil_))

#træn billederne under billedmappen

imageDir = os.path.join (baseDir, "billeder")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Træning …..". kode ())

for root, dirs, filer i os.walk (imageDir):

print (root, dirs, files) for fil i filer: print (file) if file.endswith ("png") eller file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (rod) print (etiket)

hvis ikke etiket i labelIds:

labelIds [label] = currentId print (labelIds) currentId += 1

id_ = labelIds [label]

pilImage = Image.open (sti).convert ("L") imageArray = np.array (pilImage, "uint8") ansigter = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

for (x, y, w, h) i ansigter:

roi = imageArray [y: y+h, x: x+w] xTrain.append (roi) yLabels.append (id_)

med åbne ("etiketter", "wb") som f:

pickle.dump (labelIds, f) f.close ()

anerkender.træn (xTrain, np.array (yLabels))

anerkendelse.save ("trainer.yml") print (labelIds)

Trin 3: Anerkendelse af ansigter

efter træningen var slut nu kan du køre nedenstående kode, så den begynder at genkende dine trænede ansigter

import osos.environ ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep

med åbne ('etiketter', 'rb') som f:

dicti = pickle.load (f) f.close ()

kamera = cv2. VideoCapture (0)

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

anerkender = cv2.face. LBPHFaceRecognizer_create () anerkender.read ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

sidste = ''

#for frame in camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

mens True: ret, frame = camera.read () grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) ansigter = faceCascade.detectMultiScale (grå, scaleFactor = 1,5, minNeighbors = 5) for (x, y, w, h) i ansigter: roiGray = grå [y: y+h, x: x+w]

id_, conf = identifier.predict (roiGray)

for navn, værdi i dicti.items ():

hvis værdi == id_: udskriv (navn) cv2.putText (ramme, navn, (x, y), skrifttype, 2, (0, 0, 255), 2, cv2. LINE_AA) hvis navn! = sidste: sidste = navn hvis conf <= 70: cv2.rektangel (ramme, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('ramme', ramme)

nøgle = cv2.waitKey (1)

hvis nøgle == 27:

break cv2.destroyAllWindows ()

Anbefalede: