Turinys:

„Opencv“veido aptikimas, mokymas ir atpažinimas: 3 žingsniai
„Opencv“veido aptikimas, mokymas ir atpažinimas: 3 žingsniai

Video: „Opencv“veido aptikimas, mokymas ir atpažinimas: 3 žingsniai

Video: „Opencv“veido aptikimas, mokymas ir atpažinimas: 3 žingsniai
Video: Kas yra dirbtinio intelekto fotoaparatas? Kuo ji tokia galinga? 2024, Liepa
Anonim
„Opencv“veido aptikimas, mokymas ir atpažinimas
„Opencv“veido aptikimas, mokymas ir atpažinimas

„OpenCV“yra atviro kodo kompiuterinė regėjimo biblioteka, kuri yra labai populiari atliekant pagrindines vaizdo apdorojimo užduotis, tokias kaip suliejimas, vaizdų maišymas, vaizdo ir vaizdo kokybės gerinimas, slenksčio nustatymas ir tt. modeliai, kurie gali būti tiesiogiai naudojami paprastoms užduotims spręsti.

„opencv“diegimui naudokite šią nuorodą

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

1 veiksmas: veido aptikimas vaizdo įraše realiuoju laiku

„Google“galite ieškoti daugelio veido aptikimo programų, o aptikti veidai turėtų būti išsaugoti aplanke tolesniam vaizdo apdorojimui, pvz., mokymui ir žymėjimui. mes ketiname surinkti 30 mėginių

importuoti cv2

importuoti numpy kaip np

importuoti os importo sistemą

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #pridėkite savo „harcascade“failo kelią

name = raw_input ("Koks jo vardas?")

#Visi failai bus išsaugoti aplanke Vartotojai/prasad/Dokumentai/vaizdai

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

print (dirName), jei ne os.path.exists (dirName): os.makedirs (dirName) print ("katalogas sukurtas") else: print ("pavadinimas jau yra") sys.exit ()

skaičius = 1

#Mes ketiname surinkti 30 mėginių

o skaičiuoti 30: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) veidai = faceCascade.detectMultiScale (pilka, 1,5, 5), skirta (x, y, w, h) veidams: roiGray = pilka [y: y + h, x: x + w] fileName = dirName + "/" + vardas + str (skaičius) + ".jpg" cv2.imwrite (failo pavadinimas, roiGray) cv2.imshow ("veidas", roiGray) cv2. stačiakampis (rėmelis, (x, y), (x+w, y+h), (0, 255, 0), 2) skaičius+= 1 cv2.imshow („kadras“, rėmelis) klavišas = cv2.lauktiKey (1)

jei raktas == 27:

pertrauka

#camera.release ()

cv2.destroyAllWindows ()

2 žingsnis: pavyzdinių vaizdų mokymas

Baigę veido aptikimą, galime pradėti mokyti vaizdus

importuoti osimport numpy kaip np iš PIL importo Image import cv2 import marinatas #import serial

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

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

atpažinimo priemonė = cv2.face. LBPHFaceRecognizer_create ()

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

#treniruokite vaizdus aplanke Vaizdai

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

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write („Treniruotės…..“. koduoti ())

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

spausdinti (root, dirs, failai) failams failuose: print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) print (etiketė)

jei etiketėje nėra etiketės ID:

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

id_ = labelIds [etiketė]

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

(x, y, w, h) veiduose:

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

su atvira („etiketės“, „wb“) kaip f:

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

atpažinimo įrenginys („xTrain“, „np.array“(„yLabels“))

atpažintuvas.save ("trainer.yml") print (labelIds)

3 žingsnis: veidų atpažinimas

pasibaigus mokymui, galite paleisti žemiau esantį kodą, kad jis pradėtų atpažinti jūsų apmokytus veidus

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

su atvira („etiketės“, „rb“) kaip f:

dicti = marinatas. apkrova (f) f. uždaryti ()

kamera = cv2. VideoCapture (0)

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

atpažinimo priemonė = cv2.face. LBPHFaceRecognizer_create () atpažinimo priemonė.read ("trainer.yml")

šriftas = cv2. FONT_HERSHEY_SIMPLEX

paskutinis ="

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

nors tiesa: ret, frame = camera.read () pilka = cv2.cvtColor (kadras, cv2. COLOR_BGR2GRAY) veidai = faceCascade.detectMultiScale (pilka, scaleFactor = 1.5, minNeighbours = 5) (x, y, w, h) veiduose: roiGray = pilka [y: y+h, x: x+w]

id_, conf = atpažinimo priemonė.predict (roiGray)

pavadinimas, vertė 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 = pavadinimas, jei conf <= 70: cv2. stačiakampis (kadras, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('kadras', kadras)

raktas = cv2.waitKey (1)

jei raktas == 27:

break cv2.destroyAllWindows ()

Rekomenduojamas: