Obsah:

Opencv Detekce obličeje, školení a rozpoznávání: 3 kroky
Opencv Detekce obličeje, školení a rozpoznávání: 3 kroky

Video: Opencv Detekce obličeje, školení a rozpoznávání: 3 kroky

Video: Opencv Detekce obličeje, školení a rozpoznávání: 3 kroky
Video: Software na rozpoznání obličeje do 1 sekundy, z 36 milionů inputů 2024, Červenec
Anonim
Opencv Detekce obličeje, školení a rozpoznávání
Opencv Detekce obličeje, školení a rozpoznávání

OpenCV je knihovna počítačového vidění s otevřeným zdrojovým kódem, která je velmi oblíbená pro provádění základních úloh zpracování obrazu, jako je rozmazání, míchání obrázků, vylepšování kvality obrazu a videa, prahování atd. Kromě zpracování obrazu poskytuje různé předem vyškolené hloubkové učení modely, které lze přímo použít k řešení jednoduchých úkolů po ruce.

pro instalaci opencv použijte tento odkaz

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

Krok 1: Detekce tváře ve videu v reálném čase

na Googlu můžete vyhledat mnoho programů pro detekci tváří a detekované tváře by měly být uloženy ve složce pro další zpracování obrazu, jako je školení a označování. shromáždíme 30 vzorků

importovat cv2

import numpy jako np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #přidejte cestu k harcascade souboru

name = raw_input („Jaké je jeho jméno?“)

#všechny soubory budou uloženy ve složce Users/prasad/Documents/images

dirName = "/Users/prasad/Documents/images/" + jméno

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

počet = 1

#Sbíráme 30 vzorků

zatímco počet 30: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) tváře = faceCascade.detectMultiScale (šedá, 1,5, 5) pro (x, y, w, h) v plochách: roiGray = šedá [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", roiGray) cv2.rectangle (frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

pokud klíč == 27:

přestávka

#camera.release ()

cv2.destroyAllWindows ()

Krok 2: Trénujte své ukázkové obrázky

Poté, co byla detekce obličeje dokončena, můžeme začít trénovat snímky

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 ve složce obrázků

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

currentId = 1

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

pro root, dirs, soubory v os.walk (imageDir):

print (root, dirs, files) pro soubor v souborech: print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) tisk (štítek)

pokud není uvedeno v labelIds:

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)

pro (x, y, w, h) v plochách:

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

s otevřeným („štítky“, „wb“) jako f:

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

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

recognitionnizer.save ("trainer.yml") tisk (labelIds)

Krok 3: Rozpoznávání tváří

po skončení tréninku nyní můžete spustit níže uvedený kód, aby začal rozpoznávat vaše vyškolené tváře

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

s otevřeným ('štítky', 'rb') jako f:

dicti = nakládač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 obličejích: roiGray = šedá [y: y+h, x: x+w]

id_, conf = recognitionnizer.predict (roiGray)

pro jméno, 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ámeček', rámeček)

klíč = cv2.waitKey (1)

pokud klíč == 27:

break cv2.destroyAllWindows ()

Doporučuje: