Sisällysluettelo:

Opencv -kasvojentunnistus, koulutus ja tunnistus: 3 vaihetta
Opencv -kasvojentunnistus, koulutus ja tunnistus: 3 vaihetta

Video: Opencv -kasvojentunnistus, koulutus ja tunnistus: 3 vaihetta

Video: Opencv -kasvojentunnistus, koulutus ja tunnistus: 3 vaihetta
Video: Koulutusohjeet Paddle OCR:lle räätälöidyssä tietokannassa | YOLOv7 + OCR 2023 2024, Marraskuu
Anonim
Opencv -kasvojentunnistus, koulutus ja tunnistus
Opencv -kasvojentunnistus, koulutus ja tunnistus

OpenCV on avoimen lähdekoodin tietokonenäkökirjasto, joka on erittäin suosittu perustoimintojen, kuten sumennuksen, kuvien sekoittamisen, kuvan parantamisen sekä videon laadun, kynnysarvon jne., Suorittamiseen. malleja, joita voidaan käyttää suoraan yksinkertaisten tehtävien ratkaisemiseen.

opencv -asennukseen käytä tätä linkkiä

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

Vaihe 1: Kasvojen tunnistaminen reaaliaikaisessa videossa

Voit etsiä Googlesta monia kasvojentunnistusohjelmia, ja havaitut kasvot on tallennettava kansioon, jossa voidaan jatkaa kuvankäsittelyä, kuten koulutusta ja merkintöjä. aiomme kerätä 30 näytettä

tuoda cv2

tuo numpy np: nä

tuonti tuonti sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #lisää harcascade -tiedostopolku

name = raw_input ("Mikä hänen nimensä on?")

#kaikki tiedostot tallennetaan kansioon Users/prasad/Documents/images

dirName = "/Käyttäjät/prasad/Dokumentit/kuvat/" + nimi

print (dirName) jos ei os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") else: print ("Name is already") sys.exit ()

määrä = 1

#aiomme kerätä 30 näytettä

kun taas laskea 30: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) kasvot = faceCascade.detectMultiScale (harmaa, 1,5, 5) (x, y, w, h) kasvoissa: roiGray = harmaa [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (tiedostonimi, roiGray) cv2.imshow ("face", roiGray) cv2. suorakulmio (kehys, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('kehys', kehys) -näppäin = cv2.waitKey (1)

jos avain == 27:

tauko

#camera.release ()

cv2.destroyAllWindows ()

Vaihe 2: Esimerkkikuvien kouluttaminen

Kun kasvojentunnistus on valmis, voimme mennä harjoittelemaan kuvia

tuo osimport numpy np: nä PIL -tuonnista Kuvan tuonti cv2 -tuonti suolakurkku #import -sarja

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

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

tunnistin = cv2.face. LBPHFaceRecognizer_create ()

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

#kouluta kuvat kuvat -kansion alla

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

currentId = 1

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

root, dirs, tiedostot os.walkissa (imageDir):

tulosta (juuri, kansiot, tiedostot) tiedostojen tiedostoille: tulosta (tiedosto) jos file.endswith ("png") tai file.endswith ("jpg"): polku = os.path.join (root, file) label = os.path.basename (root) print (label)

jos etiketti etiketissä

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

id_ = labelIds [label]

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

(x, y, w, h) kasvoille:

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

avoimella ("tarrat", "wb") muodossa f:

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

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

tunnistaja.save ("trainer.yml") tulosta (labelIds)

Vaihe 3: Kasvojen tunnistaminen

Harjoituksen jälkeen voit suorittaa alla olevan koodin, jotta se alkaa tunnistaa koulutetut kasvosi

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

avoin ('tarrat', 'rb') kuten f:

dicti = suolakurkku. kuormitus (f) f. sulje ()

kamera = cv2. VideoCapture (0)

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

tunnistin = cv2.face. LBPHFaceRecognizer_create () tunnistin.luku ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

viimeinen = ''

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

kun taas True: ret, frame = camera.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) kasvot = faceCascade.detectMultiScale (harmaa, scaleFactor = 1.5, minNeighbors = 5) (x, y, w, h) kasvoissa: roiGray = harmaa [y: y+h, x: x+w]

id_, conf = tunnistin.predict (roiGray)

nimi, arvo 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 = nimi jos conf <= 70: cv2. suorakulmio (kehys, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('kehys', kehys)

avain = cv2.waitKey (1)

jos avain == 27:

break cv2.destroyAllWindows ()

Suositeltava: