Sisukord:

Opencv näotuvastus, koolitus ja äratundmine: 3 sammu
Opencv näotuvastus, koolitus ja äratundmine: 3 sammu

Video: Opencv näotuvastus, koolitus ja äratundmine: 3 sammu

Video: Opencv näotuvastus, koolitus ja äratundmine: 3 sammu
Video: Tehisintellekti (AI), masinõppe ja sügava õppimise erinevus 2024, November
Anonim
Opencv näotuvastus, koolitus ja äratundmine
Opencv näotuvastus, koolitus ja äratundmine

OpenCV on avatud lähtekoodiga arvutite nägemisraamatukogu, mis on väga populaarne põhiliste pilditöötlusülesannete täitmisel, nagu hägusus, piltide segamine, pildi parandamine, samuti videokvaliteet, lävepakk jne. Lisaks pilditöötlusele pakub see mitmesuguseid eelnevalt koolitatud süvaõppeid mudelid, mida saab otse kasutada lihtsate ülesannete lahendamiseks.

opencv installimiseks kasutage seda linki

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

Samm: näo tuvastamine reaalajas videos

võite otsida googlest paljusid näotuvastusprogramme ja tuvastatud näod tuleks salvestada kausta, et saaksite täiendavalt töödelda pilte, näiteks koolitada ja sildistada. kogume 30 proovi

import cv2

import numpy np -na

import os import sys

kaamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #lisage oma harcascade failitee

name = raw_input ("Mis on tema nimi?")

#Kõik failid salvestatakse kausta Users/prasad/Documents/images

dirName = "/Kasutajad/prasad/Dokumendid/pildid/" + nimi

print (dirName) kui mitte os.path.exists (dirName): os.makedirs (dirName) print ("Kataloog loodud") else: print ("Nimi on juba olemas") sys.exit ()

loend = 1

#kogume 30 proovi

samas loendage 30: break # frame = frame.array hall = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) näod = faceCascade.detectMultiScale (hall, 1,5, 5) (x, y, w, h) nägudel: roiGray = hall [y: y + h, x: x + w] fileName = dirName + "/" + nimi + str (count) + ".jpg" cv2.imwrite (failinimi, roiGray) cv2.imshow ("nägu", roiGray) cv2. ristkülik (raam, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('raam', kaader) võti = cv2. OotKey (1)

kui võti == 27:

murda

#camera.release ()

cv2.destroyAllWindows ()

2. samm: proovipiltide koolitamine

Kui näotuvastus on lõpule viidud, saame pilte treenida

impordi osimport numpy np -na PIL -i importimisest Pildi importimine cv2 impordi hapukurk #import jada

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

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

äratundja = cv2.face. LBPHFaceRecognizer_create ()

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

#treenige pilte piltide kausta all

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

praegune ID = 1

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

root, dirs, failid os.walk (imageDir):

prindi (juur, kataloogid, failid) failides oleva faili jaoks: prindi (fail), kui fail.endswith ("png") või file.endswith ("jpg"): tee = os.path.join (juur, fail) etikett = os.path.basename (root) print (silt)

kui ei ole silt sildil ID:

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

id_ = labelIds [silt]

pilImage = Image.open (tee).convert ("L") imageArray = np.array (pilImage, "uint8") näod = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

(x, y, w, h) nägude puhul:

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

avatud ("sildid", "wb") kui f:

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

tunnistaja.treen (xTrain, np.array (yLabels))

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

3. samm: nägude äratundmine

pärast treeningu lõppu saate käivitada alloleva koodi, et see hakkaks teie treenitud nägusid ära tundma

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

avatud ('sildid', 'rb') kui f:

dicti = hapukurk. koormus (f) f. sulge ()

kaamera = cv2. VideoCapture (0)

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

äratundja = cv2.face. LBPHFaceRecognizer_create () tunnistaja.lugemine ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

viimane ="

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

samas tõsi: ret, frame = camera.read () hall = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) näod = faceCascade.detectMultiScale (hall, scaleFactor = 1,5, minNeighbors = 5) (x, y, w, h) nägudes: roiGray = hall [y: y+h, x: x+w]

id_, conf = tunnistaja.prognoos (roiGray)

nimi, väärtus dicti.items ():

if value == id_: print (nimi) cv2.putText (raam, nimi, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) kui nimi! = last: last = nimi, kui conf <= 70: cv2. ristkülik (raam, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('raam', kaader)

võti = cv2.waitKey (1)

kui võti == 27:

break cv2.destroyAllWindows ()

Soovitan: