Innehållsförteckning:

Opencv Face Detection, Training and Recognition: 3 steg
Opencv Face Detection, Training and Recognition: 3 steg

Video: Opencv Face Detection, Training and Recognition: 3 steg

Video: Opencv Face Detection, Training and Recognition: 3 steg
Video: Live Face Recognition in Python 2024, December
Anonim
Opencv Face Detection, Training and Recognition
Opencv Face Detection, Training and Recognition

OpenCV är ett open source-datorsynsbibliotek som är mycket populärt för att utföra grundläggande bildbehandlingsuppgifter som oskärpa, bildblandning, förbättra bild såväl som videokvalitet, tröskelvärden etc. Förutom bildbehandling ger det olika förutbildade djupinlärningar modeller som direkt kan användas för att lösa enkla uppgifter.

för opencv -installation, använd den här länken

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

Steg 1: Detektera ansikte i en realtidsvideo

du kan söka på google efter många program för ansiktsigenkänning och de upptäckta ansiktena ska sparas i en mapp för vidare bildbehandling, t.ex. utbildning och märkning. vi ska samla 30 prover

importera cv2

importera numpy som np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #lägg till din harcascade -filsökväg

name = raw_input ("Vad heter han/hon?")

#alla filer sparas under mappen Users/prasad/Documents/images

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

print (dirName) om inte os.path.exists (dirName): os.makedirs (dirName) print ("Directory skapat") else: print ("Namn finns redan") sys.exit ()

räkna = 1

#vi ska samla 30 prover

medan räkningen 30: bryta # ram = ram.array grå = cv2.cvtColor (ram, cv2. COLOR_BGR2GRAY) ansikten = faceCascade.detectMultiScale (grå, 1,5, 5) för (x, y, w, h) i ansikten: roiGray = grå [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", roiGray) cv2.rektangel (ram, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

if nyckel == 27:

ha sönder

#camera.release ()

cv2.destroyAllWindows ()

Steg 2: Träna dina exempelbilder

Efter att ansiktsigenkänning slutförts kan vi träna bilderna

import osimport numpy as np från PIL import Image import cv2 import pickle #import serial

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

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

identifierare = cv2.face. LBPHFaceRecognizer_create ()

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

#träna bilderna under bildmappen

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

currentId = 1

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

för root, dirs, filer i os.walk (imageDir):

print (root, dirs, files) för fil i filer: print (file) if file.endswith ("png") eller file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) print (etikett)

om inte etikett i labelIds:

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

id_ = labelIds [label]

pilImage = Image.open (sökväg).convert ("L") imageArray = np.array (pilImage, "uint8") ansikten = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

för (x, y, w, h) i ansikten:

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

med öppen ("etiketter", "wb") som f:

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

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

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

Steg 3: Känna igen ansikten

efter att träningen var över nu kan du köra koden nedan så att den börjar känna igen dina tränade ansikten

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

med öppna ('etiketter', 'rb') som f:

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

kamera = cv2. VideoCapture (0)

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

igenkännare = cv2.face. LBPHFaceRecognizer_create () igenkännare.läs ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

sista = ''

#för ram i kamera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

medan True: ret, frame = camera.read () grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) ansikten = faceCascade.detectMultiScale (grå, scaleFactor = 1,5, minNeighbors = 5) för (x, y, w, h) i ansikten: roiGray = grå [y: y+h, x: x+w]

id_, conf = identifierare.predict (roiGray)

för namn, värde 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 = namn om konf <= 70: cv2.rectangle (ram, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('ram', ram)

key = cv2.waitKey (1)

if nyckel == 27:

bryt cv2.destroyAllWindows ()

Rekommenderad: