Obsah:

Rozpoznávanie tváre v reálnom čase: komplexný projekt: 8 krokov (s obrázkami)
Rozpoznávanie tváre v reálnom čase: komplexný projekt: 8 krokov (s obrázkami)

Video: Rozpoznávanie tváre v reálnom čase: komplexný projekt: 8 krokov (s obrázkami)

Video: Rozpoznávanie tváre v reálnom čase: komplexný projekt: 8 krokov (s obrázkami)
Video: DETROIT EVOLUTION - Детройт: станьте человеком, фанат фильм / фильм Reed900 2024, Júl
Anonim
Rozpoznávanie tváre v reálnom čase: komplexný projekt
Rozpoznávanie tváre v reálnom čase: komplexný projekt

V mojom poslednom návode na skúmanie OpenCV sme sa naučili AUTOMATICKÉ SLEDOVANIE OBJEKTU VISION. Teraz použijeme náš PiCam na rozpoznávanie tvárí v reálnom čase, ako vidíte nižšie:

Obrázok
Obrázok

Tento projekt bol vykonaný s touto fantastickou „Open Source Computer Vision Library“, OpenCV. V tomto návode sa zameriame na Raspberry Pi (teda Raspbian ako OS) a Python, ale kód som testoval aj na počítači Mac a funguje tiež dobre. OpenCV bol navrhnutý pre výpočtovú efektivitu a so silným zameraním na aplikácie v reálnom čase. Je teda ideálny na rozpoznávanie tváre v reálnom čase pomocou fotoaparátu.

Aby sme vytvorili kompletný projekt rozpoznávania tváre, musíme pracovať na 3 veľmi odlišných fázach:

  1. Detekcia tváre a zhromažďovanie údajov
  2. Vycvičte si Rozpoznávač
  3. Rozpoznávanie tváre

Nasledujúci blokový diagram obnovuje tieto fázy:

Obrázok
Obrázok

Krok 1: BoM - kusovník

Hlavné časti:

  1. Raspberry Pi V3 - 32,00 USD
  2. 5 -megapixelový snímač 1080p video modul mini kamery OV5647 - 13,00 USD

Krok 2: Inštalácia balíka OpenCV 3

Inštalácia balíka OpenCV 3
Inštalácia balíka OpenCV 3

Používam Raspberry Pi V3 aktualizovaný na poslednú verziu Raspbian (Stretch), takže najlepším spôsobom, ako mať nainštalovaný OpenCV, je postupovať podľa vynikajúceho tutoriálu vyvinutého Adrianom Rosebrockom: Raspbian Stretch: Nainštalujte na Raspberry Pi OpenCV 3 + Python.

Vyskúšal som niekoľko rôznych sprievodcov, ako nainštalovať OpenCV na môj Pi. Adriánov návod je najlepší. Odporúčam vám, aby ste urobili to isté a postupovali podľa jeho pokynov krok za krokom.

Akonáhle dokončíte Adrianov návod, mali by ste mať pripravené virtuálne prostredie OpenCV, aby ste mohli vykonávať svoje experimenty na svojom Pi.

Prejdeme do nášho virtuálneho prostredia a potvrdíme, že OpenCV 3 je správne nainštalovaný.

Adrian odporúča spustiť príkaz „source“pri každom otvorení nového terminálu, aby ste sa presvedčili, že vaše systémové premenné boli správne nastavené.

zdroj ~/.profil

Ďalej vstupme do nášho virtuálneho prostredia:

workon cv

Ak vidíte text (cv) pred vašou výzvou, ste vo virtuálnom prostredí cv:

(cv) pi@malina: ~ $Adrian upozorňuje, že virtuálne prostredie cv Python je úplne nezávislé a je oddelené od predvolenej verzie Pythonu, ktorá je súčasťou sťahovania programu Raspbian Stretch. Takže žiadne balíky Pythonu v globálnom adresári site-packages nebudú k dispozícii pre virtuálne prostredie cv. Podobne žiadne balíky Pythonu nainštalované v balíkoch stránok cv nebudú dostupné pre globálnu inštaláciu Pythonu

Teraz zadajte do svojho tlmočníka Python:

pytón

a potvrďte, že používate verziu 3.5 (alebo novšiu)

Vnútri tlmočníka (zobrazí sa „>>>“) importujte knižnicu OpenCV:

import cv2

Ak sa nezobrazia žiadne chybové správy, OpenCV je správne nainštalovaný do VIRTUÁLNEHO PROSTREDIA PYTHON.

Môžete tiež skontrolovať nainštalovanú verziu OpenCV:

cv2._ verzia_

Mal by sa objaviť 3.3.0 (alebo vynikajúca verzia, ktorá môže byť vydaná v budúcnosti). Vyššie uvedený Terminal PrintScreen zobrazuje predchádzajúce kroky.

Krok 3: Testovanie fotoaparátu

Testovanie fotoaparátu
Testovanie fotoaparátu

Keď máte v RPi nainštalovaný OpenCV, vyskúšajme a overte si, či váš fotoaparát funguje správne.

Predpokladám, že na vašom Raspberry Pi už je nainštalovaný PiCam.

Do IDE zadajte nižšie uvedený kód Python:

import numpy ako np

import cv2 cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set Height while (True): ret, frame = cap.read () frame = cv2. flip (rám, -1) # Prevrátiť fotoaparát vertikálne sivo = cv2.cvtColor (rám, cv2. COLOR_BGR2GRAY) cv2.imshow ('rámček', rámček) cv2.imshow ('sivý', sivý) k = cv2.waitKey (30) & 0xff, ak k == 27: # stlačením 'ESC' ukončíte prestávku cap.release () cv2.destroyAllWindows ()

Vyššie uvedený kód zachytí video stream, ktorý bude generovaný vašim PiCamom, pričom bude zobrazovať obidva vo farebnom a sivom režime BGR.

Všimnite si toho, že som fotoaparát otáčal vertikálne kvôli spôsobu, akým je zostavený. Ak to nie je váš prípad, komentujte alebo odstráňte príkazový riadok „flip“.

Kód si môžete alternatívne stiahnuť z môjho GitHub: simpleCamTest.py

Na spustenie zadajte príkaz:

python simpleCamTest.py

Na dokončenie programu musíte na klávesnici stlačiť kláves [ESC].

Pred stlačením klávesu [ESC] kliknite myšou na okno videa.

Výsledok ukazuje vyššie uvedený obrázok.

Niektorí výrobcovia zistili problémy pri pokuse o otvorenie fotoaparátu (chybové hlásenia „Assertion failed“). To sa môže stať, ak kamera nebola počas inštalácie OpenCv povolená, a preto sa ovládače kamier nenainštalovali správne. Na opravu použite príkaz:

sudo modprobe bcm2835-v4l2

Môžete tiež pridať bcm2835-v4l2 do posledného riadka súboru /etc /modules, aby sa ovládač načítal pri zavádzaní.

Ak sa chcete dozvedieť viac o OpenCV, môžete sa riadiť týmto návodom: načítanie -video-python-opencv-tutorial

Krok 4: Detekcia tváre

Detekcia tváre
Detekcia tváre
Detekcia tváre
Detekcia tváre

Najzákladnejšou úlohou rozpoznávania tváre je samozrejme „rozpoznávanie tváre“. Predtým než začnete čokoľvek, musíte „zachytiť“tvár (fáza 1), aby ste ju rozpoznali, v porovnaní s novou tvárou zachytenou v budúcnosti (fáza 3).

Najbežnejším spôsobom detekcie tváre (alebo akýchkoľvek predmetov) je použitie klasifikátora Haar Cascade.

Detekcia objektov pomocou kaskádových klasifikátorov založených na funkciách Haar je efektívna metóda detekcie objektov, ktorú navrhli Paul Viola a Michael Jones vo svojom príspevku „Rýchla detekcia objektov pomocou vylepšenej kaskády jednoduchých funkcií“v roku 2001. Ide o prístup založený na strojovom učení, kde kaskádová funkcia je trénovaná z mnohých pozitívnych a negatívnych obrazov. Potom sa používa na detekciu predmetov na iných obrázkoch.

Tu budeme pracovať s detekciou tváre. Na vyškolenie klasifikátora algoritmus spočiatku potrebuje veľa pozitívnych obrázkov (obrázky tvárí) a negatívnych obrázkov (obrázky bez tvárí). Potom z neho musíme extrahovať funkcie. Dobrou správou je, že OpenCV je dodávaný s trénerom aj detektorom. Ak chcete vycvičiť svoj vlastný klasifikátor pre akýkoľvek objekt, ako je auto, lietadlo atď., Na jeho vytvorenie môžete použiť OpenCV. Jeho úplné podrobnosti sú uvedené tu: Školenie kaskádového klasifikátora.

Ak si nechcete vytvárať vlastný klasifikátor, OpenCV už obsahuje mnoho vopred vyškolených klasifikátorov pre tvár, oči, úsmev atď. Tieto súbory XML je možné stiahnuť z adresára haarcascades.

Dosť teórie, vytvoríme detektor tváre s OpenCV!

Stiahnite si súbor: faceDetection.py z môjho GitHubu.

import numpy ako np

import cv2 faceCascade = cv2. CascadeClassifier ('Cascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set Height while True: ret, img = cap.read () img = cv2.flip (img, -1) sivá = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváre = faceCascade.detectMultiScale (sivá, scaleFactor = 1,2, minSusedia = 5, minSize = (20, 20)) pre (x, y, w, h) v tvárach: cv2.rectangle (obr., (X, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = sivá [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] cv2.imshow ('video', obr.) k = cv2.waitKey (30) & 0xff, ak k == 27: # stlačením 'ESC' ukončíte prestávku cap.release () cv2.destroyAllWindows ()

Verte či neverte, vyššie uvedených niekoľko riadkov kódu je všetko, čo potrebujete na rozpoznanie tváre pomocou Pythonu a OpenCV.

Keď porovnáte s posledným kódom použitým na testovanie fotoaparátu, zistíte, že do neho bolo pridaných niekoľko častí. Všimnite si nasledujúci riadok:

faceCascade = cv2. CascadeClassifier ('Cascades/haarcascade_frontalface_default.xml')

Toto je riadok, ktorý načíta „klasifikátor“(musí byť v adresári s názvom „Kaskády/“pod adresárom projektu).

Potom nastavíme fotoaparát a v slučke načítame naše vstupné video v režime šedej stupnice (to isté sme videli predtým).

Teraz musíme zavolať funkciu nášho klasifikátora a odovzdať mu niekoľko veľmi dôležitých parametrov, ako sú faktor mierky, počet susedov a minimálna veľkosť rozpoznanej tváre.

Faces = faceCascade.detectMultiScale (sivá, mierka Faktor = 1,2, minSusedia = 5, minVeľkosť = (20, 20))

Kde,

  • šedá je vstupný obrázok v odtieňoch sivej.
  • scaleFactor je parameter, ktorý určuje, o koľko sa zmenší veľkosť obrázka v každej mierke obrázka. Používa sa na vytvorenie pyramídy stupnice.
  • minNeighbors je parameter, ktorý určuje, koľko susedov by mal mať každý kandidátny obdĺžnik, aby sa zachoval. Vyššie číslo dáva nižšie falošné pozitíva.
  • minSize je minimálna veľkosť obdĺžnika, ktorý sa má považovať za tvár.

Táto funkcia detekuje tváre na obrázku. Ďalej musíme „označiť“tváre na obrázku, napríklad pomocou modrého obdĺžnika. To sa deje s touto časťou kódu:

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

cv2.rectangle (obr., (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = sivá [y: y+h, x: x+w] roi_color = obr. [y: y+h, x: x+w]

Ak sa nájdu tváre, vráti polohy rozpoznaných tvárí ako obdĺžnik s ľavým horným rohom (x, y) a so šírkou „w“a „h“ako výškou ==> (x, y, w, h). Pozrite sa na vyššie uvedený obrázok.

Keď získame tieto miesta, môžeme pre tvár vytvoriť „ROI“(nakreslený obdĺžnik) a výsledok prezentovať pomocou funkcie imshow ().

Spustite vyššie uvedený skript python vo svojom prostredí python pomocou terminálu Rpi:

python faceDetection.py

Výsledok:

Obrázok
Obrázok

Môžete tiež zahrnúť klasifikátory pre „detekciu očí“alebo dokonca „detekciu úsmevu“. V týchto prípadoch zahrniete funkciu klasifikátora a nakreslenie obdĺžnika do slučky tváre, pretože by bolo zbytočné detekovať oko alebo úsmev mimo tváre.

Všimnite si toho, že keď má Pi niekoľko klasifikátorov s rovnakým kódom, spracovanie sa spomalí, akonáhle táto metóda detekcie (HaarCascades) využije veľké množstvo výpočtového výkonu. Na stolnom počítači je jednoduchšie ho spustiť.

Na mojom GitHub nájdete ďalšie príklady:

faceEyeDetection.py

faceSmileDetection.py

faceSmileEyeDetection.py

A na obrázku vyššie vidíte výsledok.

Môžete tiež postupovať podľa nižšie uvedeného návodu, aby ste lepšie porozumeli rozpoznaniu tváre:

Haar Kaskádová detekcia objektov Face & Eye OpenCV Python návod

Krok 5: Zhromažďovanie údajov

Zbieranie dát
Zbieranie dát
Zbieranie dát
Zbieranie dát

V prvom rade sa musím poďakovať Ramizovi Rajovi za jeho skvelú prácu na rozpoznávaní tvárí na fotografiách:

UZNÁVANIE TVÁRA S POUŽITÍM OPENCV A PYTHONU: PRÍRUČKA PRE ZAČIATOČNÍKA

a tiež Anirban Kar, ktorý vyvinul veľmi komplexný návod pomocou videa:

UZNÁVANIE TVÁRE - 3 diely

Naozaj vám odporúčam pozrieť sa na oba návody.

Keď to hovoríme, začnime s prvou fázou nášho projektu. To, čo tu urobíme, začína od posledného kroku (Rozpoznávanie tváre), jednoducho vytvoríme množinu údajov, kde pre každé ID uložíme skupinu fotografií v sivej farbe s časťou, ktorá bola použitá na rozpoznanie tváre.

Najprv vytvorte adresár, kde rozvíjate svoj projekt, napríklad FacialRecognitionProject:

mkdir FacialRecognitionProject

V tomto adresári sme okrem troch pythonových skriptov, ktoré vytvoríme pre náš projekt, museli mať uložený klasifikátor tváre. Môžete si ho stiahnuť z môjho GitHub: haarcascade_frontalface_default.xml

Potom vytvorte podadresár, kam budeme ukladať naše vzorky tváre a pomenujeme ho „množina údajov“:

súbor údajov mkdir

A stiahnite si kód z môjho GitHub: 01_face_dataset.py

import cv2

import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set video width cam.set (4, 480) # set video height face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # For each person, zadajte jedno číselné ID tváre face_id = zadajte ('\ n zadajte ID užívateľa koniec stlačte ==>') vytlačte ("\ n [INFO] Inicializuje sa snímanie tváre. Pozrite sa na fotoaparát a počkajte …") # Inicializujte počet vzoriek, ktoré sa majú počítať podľa počtu vzoriek = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip video image vertically grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) Faces = face_detector.detectMultiScale (sivá, 1,3, 5) pre (x, y, w, h) v tvárach: cv2.rectangle (obr., (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Uložte nasnímaný obrázok do priečinka množín údajov cv2.imwrite ("množina údajov/používateľ." + str (face_id) + '.' + str (počet) + ".jpg", sivý [y: y + h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Stlačením 'ESC' ukončíte video, ak k == 27: počet prestávok>> 30: # Vezmite 30 vzoriek tváre a zastavte prestávku s videom # Do ab vyčistenie tlače ("\ n [INFO] Ukončenie programu a vyčistenie") cam.release () cv2.destroyAllWindows ()

Kód je veľmi podobný kódu, ktorý sme videli na rozpoznanie tváre. Čo sme pridali, bol „vstupný príkaz“na zachytenie ID užívateľa, ktoré by malo byť celé číslo (1, 2, 3 atď.)

face_id = vstup ('\ n zadajte ID užívateľa koniec stlačte ==>')

A pre každý zo zachytených rámcov by sme ho mali uložiť ako súbor v adresári „dataset“:

cv2.imwrite ("množina údajov/používateľ." + str (face_id) + '.' + str (počet) + ".jpg", sivý [y: y + h, x: x + w])

Upozorňujeme, že na uloženie vyššie uvedeného súboru musíte mať importovanú knižnicu „os“. Názov každého súboru bude mať nasledujúcu štruktúru:

User.face_id.count.jpg

Napríklad pre používateľa s face_id = 1 bude 4. ukážkový súbor v množine údajov/ adresári niečo ako:

Používateľ.1.4.jpg

ako je znázornené na vyššie uvedenej fotografii z môjho Pi. Na svojom kóde zachytávam 30 vzoriek z každého id. Môžete to zmeniť na poslednom „elife“. Počet vzoriek sa používa na prerušenie slučky, kde sú zachytené vzorky tváre.

Spustite skript Python a zachyťte niekoľko ID. Skript musíte spustiť vždy, keď chcete agregovať nového používateľa (alebo zmeniť fotografie za už existujúceho).

Krok 6: Tréner

Tréner
Tréner

V tejto druhej fáze musíme prevziať všetky používateľské údaje z nášho súboru údajov a „školiteľa“rozpoznávača OpenCV. To sa deje priamo pomocou konkrétnej funkcie OpenCV. Výsledkom bude súbor.yml, ktorý bude uložený v adresári „školiteľ/“.

Začnime teda vytvárať podadresár, do ktorého budeme ukladať natrénované údaje:

tréner mkdir

Stiahnite si z môjho GitHubu druhý skript pythonu: 02_face_training.py

import cv2

import numpy as np from PIL import Image import os # Path for face image database path = 'dataset' recognitionnizer = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funkcia na získanie obrázkov a údajov štítkov def getImagesAndLabels (cesta): imagePaths = [os.path.join (cesta, f) pre f v os.listdir (cesta)] faceSamples = ids = pre imagePath v imagePaths: PIL_img = Image.open (imagePath).convert ('L') # konvertujte ho na stupne šedi img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. rozdelené (".") [1]) tváre = detector.detectMultiScale (img_numpy) pre (x, y, w, h) v tvárach: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Tréningové tváre. Bude to trvať niekoľko sekúnd. Počkajte …") tváre, ids = getImagesAndLabels (cesta) rozpoznávač.train (tváre, np.array (ids)) # Uložte model do súboru trainer/trainer.yml recognitionnizer.write ('trainer/trainer.yml') # ("\ n [INFO] {0} trénované tváre. Ukončujúci program".format (len (np.unique (ids))))

Potvrďte, či máte vo svojom Rpi nainštalovanú knižnicu PIL. Ak nie, spustite v Termináli nasledujúci príkaz:

pip inštalovať vankúš

Ako rozpoznávač použijeme rozpoznávač tváre LBPH (LOCAL BINARY PATTERNS HISTOGRAMS), ktorý je súčasťou balíka OpenCV. Robíme to v nasledujúcom riadku:

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

Funkcia „getImagesAndLabels (cesta)“nasníma všetky fotografie v adresári: „množina údajov/“a vráti 2 polia: „ID“a „tváre“. S týmito poľami ako vstupom „vycvičíme náš rozpoznávač“:

Reconizer.train (tváre, ID)

V dôsledku toho sa súbor s názvom „trainer.yml“uloží do adresára trénera, ktorý sme predtým vytvorili.

To je všetko! Zahrnul som posledný výpis z tlače, kde som zobrazil na potvrdenie, počet tvárí Používateľa, ktorých sme trénovali.

Zakaždým, keď vykonáte fázu 1, musíte spustiť aj fázu 2

Krok 7: Rozpoznávač

Rozpoznávač
Rozpoznávač
Rozpoznávač
Rozpoznávač

Teraz sme sa dostali do záverečnej fázy nášho projektu. Tu zachytíme na našom fotoaparáte čerstvú tvár a ak tejto osobe bola predtým zachytená a natrénovaná tvár, náš rozpoznávač urobí „predpoveď“, ktorá vráti jeho ID a index, čím sa ukáže, ako je rozpoznávač v tejto zhode presvedčený.

Stiahneme si skript pythonu tretej fázy z môjho GitHub: 03_face_recognition.py.

import cv2

import numpy as np import os font = cv2. FONT_HERSHEY_SIMPLEX #iniciate id counter id = 0 # names related to ids: example ==> Marcelo: id = 1, etc names = ['None', 'Marcelo', 'Paula', 'Ilza', 'Z ',' W '] # Inicializujte a spustite nahrávanie videa v reálnom čase cam = cv2. VideoCapture (0) cam.set (3, 640) # nastavte šírku videa cam.set (4, 480) # nastavte výšku videa # Definujte minimálnu veľkosť okna rozpoznať ako tvár minW = 0,1*kamera.get (3) minH = 0,1*kamera.get (4) pri True: ret, img = cam.read () img = cv2.flip (img, -1) # Prevrátiť vertikálne sivo = cv2.cvtColor (obr., Cv2. COLOR_BGR2GRAY) tváre = faceCascade.detectMultiScale (sivá, scaleFactor = 1,2, minNeighbors = 5, minSize = (int (minW), int (minH)),) pre (x, y, w, h) v tvárach: cv2.rectangle (obr., (x, y), (x+w, y+h), (0, 255, 0), 2) id, dôvera = rozpoznávač.predvídať (sivá [y: y+h, x: x+w]) # Skontrolujte, či je ich dôvera menšia 100 ==> „0“je dokonalá zhoda, ak (spoľahlivosť <100): id = mená [id] spoľahlivosť = "{0}% ".formát (zaokrúhlený (100 - spoľahlivosť)) else: id =" neznámy "spoľahlivý =" {0}%". formát (okrúhly (100 - konf. idence)) cv2.putText (img, str (id), (x+5, y-5), font, 1, (255, 255, 255), 2) cv2.putText (img, str (dôvera), (x+5, y+h-5), font, 1, (255, 255, 0), 1) cv2.imshow ('kamera', img) k = cv2.waitKey (10) & 0xff # Stlačte 'ESC' pre ukončenie videa, ak k == 27: break # Vykonajte trochu čistiacej tlače („\ n [INFO] Ukončenie programu a vyčistenie“) cam.release () cv2.destroyAllWindows ()

Zahrňujeme sem nové pole, takže namiesto očíslovaných identifikátorov zobrazíme „mená“:

names = ['None', 'Marcelo', 'Paula', 'Ilza', 'Z', 'W']

Napríklad: Marcelo bude používateľovi s id = 1; Paula: id = 2 atď.

Ďalej rozpoznáme tvár, to isté sme urobili predtým s klasifikátorom haasCascade. Keď máme rozpoznanú tvár, môžeme vo vyššie uvedenom kóde zavolať najdôležitejšiu funkciu:

id, dôvera = rozpoznávač.predpoved (sivá časť tváre)

Rozpoznávač.predikt () bude brať ako parameter zachytenú časť tváre, ktorá sa má analyzovať, a vráti svojho pravdepodobného vlastníka, pričom uvedie svoje ID a akú dôveru má rozpoznávač vo vzťahu k tejto zhode.

Všimnite si toho, že index spoľahlivosti vráti "nulu", ak bude považovaný za perfektnú zhodu

A nakoniec, ak rozpoznávač dokázal predpovedať tvár, vložíme na obrázok text s pravdepodobným id a koľko je „pravdepodobnosť“v %, že zhoda je správna („pravdepodobnosť“= 100 - index spoľahlivosti). Ak nie, na tvár sa umiestni štítok „neviem“.

Pod gifom s výsledkom:

Obrázok
Obrázok

Na vyššie uvedenom obrázku uvádzam niekoľko testov vykonaných s týmto projektom, kde som tiež pomocou fotografií overil, či rozpoznávač funguje.

Krok 8: Záver

Záver
Záver

Ako vždy, dúfam, že tento projekt pomôže iným nájsť si cestu do vzrušujúceho sveta elektroniky!

Podrobnosti a konečný kód nájdete v mojom depozitári GitHub: OpenCV-Face-Recognition

Viac projektov nájdete na mojom blogu: MJRoBot.org

Nasleduje pohľad na budúci tutoriál, v ktorom sa zameriame na „automatické sledovanie tváre a ďalšie metódy detekcie tváre“:

Obrázok
Obrázok

Saludos z juhu sveta!

Uvidíme sa pri mojom ďalšom pokyne!

Ďakujem, Marcelo

Odporúča: