Innholdsfortegnelse:

Opencv ansiktsgjenkjenning, trening og gjenkjenning: 3 trinn
Opencv ansiktsgjenkjenning, trening og gjenkjenning: 3 trinn

Video: Opencv ansiktsgjenkjenning, trening og gjenkjenning: 3 trinn

Video: Opencv ansiktsgjenkjenning, trening og gjenkjenning: 3 trinn
Video: Python (ansiktsgjenkjenning) 2024, Juli
Anonim
Opencv ansiktsgjenkjenning, trening og gjenkjenning
Opencv ansiktsgjenkjenning, trening og gjenkjenning

OpenCV er et åpen kildekode datavisjonsbibliotek som er veldig populært for å utføre grunnleggende bildebehandlingsoppgaver som uskarphet, bildeblanding, forbedring av bilde, så vel som videokvalitet, terskel etc. I tillegg til bildebehandling, gir den forskjellige forhåndsutdannede dyplæringer modeller som kan brukes direkte til å løse enkle oppgaver.

for opencv installasjon bruk denne lenken

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

Trinn 1: Oppdag ansikt i en sanntidsvideo

du kan søke på google etter mange ansiktsgjenkjenningsprogrammer, og de oppdagede ansiktene bør lagres i en mappe for videre bildebehandling, for eksempel opplæring og merking. vi skal samle 30 prøver

importer cv2

importer numpy som np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #legg til din harcascade filbane

name = raw_input ("Hva heter han/hun?")

#alle filene blir lagret i mappen Users/prasad/Documents/images

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

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

telle = 1

#vi skal samle 30 prøver

mens telling 30: break # frame = frame.array grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) ansikter = faceCascade.detectMultiScale (grå, 1,5, 5) for (x, y, w, h) i ansikter: roiGray = grå [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", 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økkel == 27:

gå i stykker

#camera.release ()

cv2.destroyAllWindows ()

Trinn 2: Trening av prøvebilder

Etter at ansiktsgjenkjenning var fullført, kan vi gå for å trene bildene

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

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

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

gjenkjenner = cv2.face. LBPHFaceRecognizer_create ()

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

#tren bildene under bildemappen

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

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Trening …..". 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 (rot) utskrift (etikett)

hvis ikke etikett i labelIds:

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

id_ = labelIds [label]

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

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

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

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

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

anerkjenner.trening (xTrain, np.array (yLabels))

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

Trinn 3: Gjenkjenne ansikter

etter at treningen var over nå kan du kjøre koden nedenfor slik at den begynner å gjenkjenne dine trente ansikter

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

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

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

kamera = cv2. VideoCapture (0)

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

anerkjenner = cv2.face. LBPHFaceRecognizer_create () gjenkjenner.les ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

siste = ''

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

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

id_, conf = gjenkjenner.predikt (roiGray)

for navn, verdi i 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 = navn hvis conf <= 70: cv2.rektangel (ramme, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('ramme', ramme)

nøkkel = cv2.waitKey (1)

hvis nøkkel == 27:

break cv2.destroyAllWindows ()

Anbefalt: