INHOUDSOPGAWE:

Opencv Gesigsopsporing, opleiding en herkenning: 3 stappe
Opencv Gesigsopsporing, opleiding en herkenning: 3 stappe

Video: Opencv Gesigsopsporing, opleiding en herkenning: 3 stappe

Video: Opencv Gesigsopsporing, opleiding en herkenning: 3 stappe
Video: Leap Motion SDK 2024, November
Anonim
Opencv Gesigsopsporing, opleiding en herkenning
Opencv Gesigsopsporing, opleiding en herkenning

OpenCV is 'n oopbron-rekenaarvisie-biblioteek wat baie gewild is vir die uitvoering van basiese beeldverwerkingstake, soos vervaging, beeldvermenging, verbetering van beeld sowel as videokwaliteit, drempelwaarde, benewens beeldverwerking, bied dit ook verskillende vooraf opgeleide diep leer modelle wat direk gebruik kan word om eenvoudige take op te los.

Gebruik hierdie skakel vir opencv -installasie

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

Stap 1: Ontdek gesig in 'n real -time video

U kan op baie gesigsopsporingsprogramme op Google soek, en die gesigte wat opgespoor word, moet in 'n gids gestoor word vir verdere beeldverwerking, soos opleiding en etikettering. ons gaan 30 monsters versamel

voer cv2 in

invoer numpy as np

invoer os invoer sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #voeg u harcascade lêerpad by

name = raw_input ("Wat is sy/haar naam?")

#al die lêers sal gestoor word onder die gebruikers/prasad/dokumente/afbeeldings gids

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

print (dirName) indien nie os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") anders: print ("Naam bestaan reeds") sys.exit ()

tel = 1

#ons gaan 30 monsters versamel

terwyl telling 30: breek # raam = raam. skikking grys = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) gesigte = faceCascade.detectMultiScale (grys, 1.5, 5) vir (x, y, w, h) in gesigte: roiGray = grys [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", roiGray) cv2. reghoek (raam, (x, y), (x+w, y+h), (0, 255, 0), 2) telling+= 1 cv2.imshow ('raam', raam) sleutel = cv2.waitKey (1)

as sleutel == 27:

breek

#kamera.vrystelling ()

cv2.destroyAllWindows ()

Stap 2: Leer u voorbeeldbeelde op

Nadat gesigsopsporing voltooi is, kan ons die beelde gaan oplei

invoer osimport numpy as np van PIL import Image invoer cv2 import pickle #impor serial

#ser = serial. Serial ('/dev/ttyACM0', 9600, time -out = 1)

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

herkener = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ lêer_))

#leer die beelde onder die prentmap

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

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Opleiding …..". kodeer ())

vir root, dirs, lêers in os.walk (imageDir):

print (root, dirs, files) vir lêer in lêers: print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (wortel) druk (etiket)

indien nie etiket in labelIds:

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

id_ = labelIds [label]

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

vir (x, y, w, h) in gesigte:

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

met oop ("etikette", "wb") as f:

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

herkenner.trein (xTrain, np.array (yLabels))

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

Stap 3: Herken gesigte

Nadat die opleiding verby was, kan u die onderstaande kode uitvoer sodat dit u opgeleide gesigte sal herken

invoer osos.environ ['PYTHONINSPECT'] = 'op' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO van tyd af slaap

met oop ('etikette', 'rb') as f:

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

kamera = cv2. VideoCapture (0)

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

herkenner = cv2.face. LBPHFaceRecognizer_create () herkener.lees ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

laaste = ''

#vir raam in kamera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

terwyl True: ret, frame = camera.read () grys = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) gesigte = faceCascade.detectMultiScale (grys, scaleFactor = 1.5, minNeighbors = 5) vir (x, y, w, h) in gesigte: roiGray = grys [y: y+h, x: x+w]

id_, conf = identifier.predict (roiGray)

vir naam, waarde in dicti.items ():

as waarde == id_: druk (naam) cv2.putText (raam, naam, (x, y), lettertipe, 2, (0, 0, 255), 2, cv2. LINE_AA) as naam! = laaste: laaste = naam as conf <= 70: cv2.rectangle (raam, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('raam', raam)

sleutel = cv2.waitKey (1)

as sleutel == 27:

breek cv2.destroyAllWindows ()

Aanbeveel: