Përmbajtje:

Zbulimi, Trajnimi dhe Njohja e Fytyrës Opencv: 3 Hapa
Zbulimi, Trajnimi dhe Njohja e Fytyrës Opencv: 3 Hapa

Video: Zbulimi, Trajnimi dhe Njohja e Fytyrës Opencv: 3 Hapa

Video: Zbulimi, Trajnimi dhe Njohja e Fytyrës Opencv: 3 Hapa
Video: Leap Motion SDK 2024, Korrik
Anonim
Hapja, Trajnimi dhe Njohja e Fytyrës
Hapja, Trajnimi dhe Njohja e Fytyrës

OpenCV është një bibliotekë e vizionit kompjuterik me burim të hapur, e cila është shumë e popullarizuar për kryerjen e detyrave themelore të përpunimit të imazhit, të tilla si turbullimi, përzierja e imazhit, përmirësimi i imazhit, si dhe cilësia e videos, pragu etj. Përveç përpunimit të imazhit, ai siguron mësime të ndryshme të thella të para-trajnuara modele të cilat mund të përdoren drejtpërdrejt për të zgjidhur detyra të thjeshta në dispozicion.

për instalimin opencv përdorni këtë lidhje

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

Hapi 1: Zbulimi i fytyrës në një video në kohë reale

mund të kërkoni në Google për shumë programe të zbulimit të fytyrës dhe fytyrat e zbuluara duhet të ruhen në një dosje për përpunimin e mëtejshëm të imazheve, si trajnimi dhe etiketimi. ne do të mbledhim 30 mostra

import cv2

importoni numpy si np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #shto rrugën tënde të skedarit harcascade

emri = raw_input ("Cili është emri i tij/saj?")

#të gjitha skedarët do të ruhen nën dosjen Përdoruesit/prasad/Documents/images

dirName = "/Përdoruesit/prasad/Dokumentet/imazhet/" + emri

print (dirName) nëse jo os.path.ekziston (dirName): os.makedirs (dirName) print ("Directory Created") tjetër: print ("Emri tashmë ekziston") sys.exit ()

numërimi = 1

#ne do të mbledhim 30 mostra

ndërsa numërimi 30: thyer # kornizë = kornizë. gri gri = cv2.cvtColor (kornizë, cv2. COLOR_BGR2GRAY) fytyra = faceCascade.detectMultiScale (gri, 1.5, 5) për (x, y, w, h) në fytyrat: roiGray = gri [y: y + h, x: x + w] emri i skedarit = dirName + "/" + emri + str (numërimi) + ".jpg" cv2.imwrite (emri i skedarit, roiGray) cv2.imshow ("fytyrë", roiGray) cv2.rekëndësh (kornizë, (x, y), (x+w, y+h), (0, 255, 0), 2) numërim+= 1 cv2.imshow ('frame', frame) kyç = cv2.presi çelësin (1)

nëse çelësi == 27:

pushim

#camera.release ()

cv2.destroyAllWindows ()

Hapi 2: Trajnimi i imazheve tuaja mostër

Pasi të ketë përfunduar Zbulimi i Fytyrës atëherë mund të shkojmë për trajnimin e imazheve

import osimport numpy si np nga PIL import Imazh import cv2 import turshi #import serial

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

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

njohës = cv2.face. LBPHFaceRecognizer_create ()

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

#trajnoni imazhet nën dosjen e imazheve

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

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Trajnim…..". kodoj ())

për rrënjë, dirs, skedarë në os.walk (imageDir):

print (rrënjë, dirs, skedarë) për skedarin në skedarë: printoni (skedarin) nëse file.endswith ("png") ose file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (rrënjë) print (etiketë)

nëse nuk etiketohet në labelIds:

labelIds [label] = printimi aktualId (labelIds) currentId += 1

id_ = labelIds [label]

pilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage, "uint8") face = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minFqinjët = 5)

për (x, y, w, h) në fytyra:

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

me hapur ("etiketat", "wb") si f:

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

njohës.tren (xTrain, np.array (yLabels))

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

Hapi 3: Njohja e fytyrave

pasi mbaroi trajnimi tani mund të përdorni kodin e mëposhtëm në mënyrë që ai të fillojë të njohë fytyrat tuaja të stërvitura

import osos.environ ['PYTHONINSPECT'] = 'në' import cv2 import numpy si np import turshi #import RPi. GPIO si GPIO nga koha e importimit të gjumit

me të hapur ('etiketa', 'rb') si f:

dicti = turshi. ngarkesa (f) f.mbylli ()

kamera = cv2. VideoCapture (0)

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

njohës = cv2.face. LBPHFaceRecognizer_create () njohës.lex ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

e fundit ="

#për kornizën në camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

ndërsa True: ret, frame = camera.read () gri = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) fytyra = faceCascade.detectMultiScale (gri, scaleFactor = 1.5, minFqinjët = 5) për (x, y, w, h) në fytyra: roiGray = gri [y: y+h, x: x+w]

id_, conf = njohës. parashikoj (roiGray)

për emrin, vlerën në dicti.items ():

nëse vlera == id_: print (emri) cv2.putText (kuadri, emri, (x, y), fonti, 2, (0, 0, 255), 2, cv2. LINE_AA) nëse emri! = i fundit: i fundit = emri nëse conf <= 70: cv2. drejtkëndësh (kornizë, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('kornizë', kornizë)

çelësi = cv2.waitKey (1)

nëse çelësi == 27:

thye cv2.destroyAllWindows ()

Recommended: