Inhoudsopgave:

Opencv Gezichtsdetectie, training en herkenning: 3 stappen
Opencv Gezichtsdetectie, training en herkenning: 3 stappen

Video: Opencv Gezichtsdetectie, training en herkenning: 3 stappen

Video: Opencv Gezichtsdetectie, training en herkenning: 3 stappen
Video: How Does Your Phone Know This Is A Dog? 2024, November
Anonim
Opencv Gezichtsdetectie, training en herkenning
Opencv Gezichtsdetectie, training en herkenning

OpenCV is een open source computer vision-bibliotheek die erg populair is voor het uitvoeren van elementaire beeldverwerkingstaken zoals vervaging, beeldvermenging, verbetering van de beeld- en videokwaliteit, drempelwaarden enz. Naast beeldverwerking biedt het verschillende vooraf getrainde deep learning modellen die direct kunnen worden gebruikt om eenvoudige taken op te lossen.

gebruik deze link voor opencv-installatie:

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

Stap 1: Gezicht detecteren in een realtime video

je kunt op Google zoeken naar veel gezichtsdetectieprogramma's en de gedetecteerde gezichten moeten worden opgeslagen in een map voor verdere beeldverwerking, zoals training en labeling. we gaan 30 monsters verzamelen

import cv2

importeer numpy als np

import os import sys

camera = cv2. VideoCapture(0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #voeg uw harcascade-bestandspad toe

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

#alle bestanden worden opgeslagen in de map Users/prasad/Documents/images

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

print(dirName) indien niet os.path.exists(dirName): os.makedirs(dirName) print("Directory Gemaakt") else: print("Naam bestaat al") sys.exit()

tellen = 1

#we gaan 30 stalen verzamelen

while count 30: break # frame = frame.array grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(grey, 1.5, 5) for (x, y, w, h) in faces: roiGray = grey[y:y+h, x:x+w] fileName = dirName + "/" + name + str(count) + ".jpg" cv2.imwrite(fileName, roiGray) cv2.imshow("face", roiGray) cv2.rechthoek(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count += 1 cv2.imshow('frame', frame) key = cv2.waitKey(1)

als toets == 27:

pauze

#camera.release()

cv2.destroyAllWindows()

Stap 2: Uw voorbeeldafbeeldingen trainen

Nadat Gezichtsdetectie is voltooid, kunnen we de afbeeldingen gaan trainen

import osimport numpy als np van PIL import Image import cv2 import augurk #import serial

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

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

herkenner = cv2.face. LBPHFaceRecognizer_create()

baseDir = os.path.dirname(os.path.abspath(_file_))

#train de afbeeldingen onder de afbeeldingenmap

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

huidige ID = 1

labelIds = {} yLabels = xTrain = #ser.write("Training…..".encode())

voor root, dirs, bestanden in os.walk(imageDir):

print(root, dirs, bestanden) voor bestand in bestanden: print(bestand) if file.endswith("png") of file.endswith("jpg"): path = os.path.join(root, bestand) label = os.path.basename(root) print(label)

indien niet label in labelIds:

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

id_ = labelIds[label]

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

voor (x, y, w, h) in vlakken:

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

met open("labels", "wb") als f:

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

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

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

Stap 3: Gezichten herkennen

nadat de training voorbij was, kun je nu de onderstaande code uitvoeren, zodat deze je getrainde gezichten begint te herkennen

import osos.environ['PYTHONINSPECT'] = 'aan' import cv2 import numpy als np import augurk #import RPi. GPIO als GPIO vanaf time import sleep

met open('labels', 'rb') als f:

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

camera = cv2. VideoCapture(0)

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

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

lettertype = cv2. FONT_HERSHEY_SIMPLEX

laatste=''

#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) faces = faceCascade.detectMultiScale(grey, scaleFactor = 1.5, minNeighbours = 5) for (x, y, w, h) in gezichten: roiGray = grijs[y:y+h, x:x+w]

id_, conf = herkenner.voorspelling (roiGray)

voor naam, waarde 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= naam if conf <= 70: cv2.rechthoek(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow('frame', frame)

sleutel = cv2.waitKey(1)

als toets == 27:

breken cv2.destroyAllWindows()

Aanbevolen: