Obsah:

Opencv Detekcia tváre, školenie a rozpoznávanie: 3 kroky
Opencv Detekcia tváre, školenie a rozpoznávanie: 3 kroky

Video: Opencv Detekcia tváre, školenie a rozpoznávanie: 3 kroky

Video: Opencv Detekcia tváre, školenie a rozpoznávanie: 3 kroky
Video: Leap Motion SDK 2024, November
Anonim
Opencv Detekcia tváre, školenie a rozpoznávanie
Opencv Detekcia tváre, školenie a rozpoznávanie

OpenCV je knižnica počítačového videnia s otvoreným zdrojovým kódom, ktorá je veľmi obľúbená pri vykonávaní základných úloh spracovania obrazu, ako je rozmazanie, miešanie obrázkov, vylepšovanie kvality obrazu a videa, prahovanie atď. Okrem spracovania obrazu poskytuje rôzne vopred vyškolené hĺbkové učenie. modely, ktoré je možné priamo použiť na riešenie jednoduchých úloh po ruke.

na inštaláciu opencv použite tento odkaz

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

Krok 1: Detekcia tváre vo videu v reálnom čase

v službe Google môžete vyhľadať mnoho programov na detekciu tvárí a detekované tváre by sa mali uložiť do priečinka na ďalšie činnosti súvisiace so spracovaním obrazu, ako je školenie a označovanie. zhromaždíme 30 vzoriek

import cv2

import numpy ako np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #pridajte svoju cestu k súboru harcascade

name = raw_input („Aké je jeho meno?“)

#všetky súbory budú uložené v priečinku Používatelia/prasad/Dokumenty/obrázky

dirName = "/Používatelia/prasad/Dokumenty/obrázky/" + meno

print (dirName) if not os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") else: print ("Name already existing") sys.exit ()

počet = 1

#ideme zozbierať 30 vzoriek

zatiaľ čo počet 30: zlom # rám = rám.array sivý = cv2.cvtColor (rám, cv2. COLOR_BGR2GRAY) tváre = faceCascade.detectMultiScale (sivý, 1,5, 5) pre (x, y, w, h) v tvárach: roiGray = sivá [y: y + h, x: x + w] názov_súboru = dirName + "/" + meno + str (počet) + ".jpg" cv2.imwrite (názov súboru, roiGray) cv2.imshow ("tvár", roiGray) cv2.rectangle (frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

ak kľúč == 27:

prestávka

#camera.release ()

cv2.destroyAllWindows ()

Krok 2: Zaškolte si ukážkové obrázky

Keď bola detekcia tváre dokončená, môžeme začať trénovať obrázky

import osimport numpy as np from PIL import Image import cv2 import pickle #import serial

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

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

rozpoznávač = cv2.face. LBPHFaceRecognizer_create ()

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

#trénujte obrázky v priečinku s obrázkami

imageDir = os.path.join (baseDir, "obrázky")

currentId = 1

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

pre root, dirs, súbory v os.walk (imageDir):

print (root, dirs, files) pre súbor v súboroch: print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) tlač (štítok)

ak nie je uvedené v označení

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

id_ = labelIds [label]

pilImage = Image.open (cesta).convert ("L") imageArray = np.array (pilImage, "uint8") Faces = faceCascade.detectMultiScale (imageArray, scaleFactor = 1,1, minNeighbors = 5)

pre (x, y, w, h) v tvárach:

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

s otvorenými („štítky“, „wb“) ako f:

nakladačka.dump (labelIds, f) f.close ()

rozpoznávač.train (xTrain, np.array (yLabels))

Relignizer.save ("trainer.yml") tlač (labelIds)

Krok 3: Rozpoznávanie tvárí

po skončení školenia teraz môžete spustiť nižšie uvedený kód, aby začal rozpoznávať vaše trénované tváre

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

s otvorenými („štítky“, „rb“) ako f:

dicti = nakladačka.load (f) f.close ()

kamera = cv2. VideoCapture (0)

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

Reconier = cv2.face. LBPHFaceRecognizer_create ()

font = cv2. FONT_HERSHEY_SIMPLEX

last = ''

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

while True: ret, frame = camera.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale (grey, scaleFactor = 1,5, minNeighbors = 5) for (x, y, w, h) v tvárach: roiGray = sivá [y: y+h, x: x+w]

id_, conf = recognitionnizer.predict (roiGray)

pre meno, hodnota v 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 = name if conf <= 70: cv2.rectangle (frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('rám', rám)

kľúč = cv2.waitKey (1)

ak kľúč == 27:

break cv2.destroyAllWindows ()

Odporúča: