Obsah:

Rozpoznání tváře+rozpoznávání: 8 kroků (s obrázky)
Rozpoznání tváře+rozpoznávání: 8 kroků (s obrázky)

Video: Rozpoznání tváře+rozpoznávání: 8 kroků (s obrázky)

Video: Rozpoznání tváře+rozpoznávání: 8 kroků (s obrázky)
Video: TOP 15 – Skryté funkce na iPhone (iOS), které musíte znát! 🔥 2024, Červenec
Anonim
Image
Image
Rozpoznání tváře+rozpoznávání
Rozpoznání tváře+rozpoznávání

Toto je jednoduchý příklad spuštění detekce a rozpoznávání tváře pomocí OpenCV z kamery. POZNÁMKA: VYROBIL JSEM TENTO PROJEKT SOUTĚŽE SENZORŮ A KAMERU JSEM POUŽIL JAKO SENZOR KE SLEDOVÁNÍ A ROZPOZNÁVÁNÍ OBRAZŮ. Náš cíl V této relaci 1. Nainstalujte Anacondu 2. Stáhněte si otevřený balíček CV 3. Nastavte proměnné prostředí 4. Test potvrďte 5. Vytvořte kód pro detekci obličejů. 6. Vytvořte kód pro vytvoření datové sady. 7. Vytvořte kód pro trénování rozpoznávače. 8. Vytvořte kód pro rozpoznávání obličejů a výsledek.

Krok 1: Nainstalujte Anacondu

Nainstalujte si Anacondu
Nainstalujte si Anacondu

Anaconda je v podstatě pěkně zabalené IDE Pythonu, které je dodáváno s mnoha užitečnými balíčky, jako jsou NumPy, Pandas, IPython Notebook atd. Zdá se, že je doporučován všude ve vědecké komunitě. Chcete -li jej nainstalovat, podívejte se na Anacondu.

Krok 2: Stáhněte si Open CV Package

Stáhněte si Open CV Package
Stáhněte si Open CV Package

Nejprve přejděte na oficiální web OpenCV a stáhněte si kompletní balíček OpenCV. Vyberte verzi, která se vám líbí (2.x nebo 3.x). Jsem na Pythonu 2.xa OpenCV 2.x - hlavně proto, že takto se nastavují/vycházejí kurzy OpenCV -Python.

V mém případě jsem extrahoval balíček (v podstatě složku) přímo na můj F disk. (F: / opencv).

Krok 3: Nastavte proměnné prostředí

Nastavit proměnné prostředí
Nastavit proměnné prostředí

Zkopírujte a vložte soubor cv2.pyd

Adresář balíčků Anaconda Site-packages (např. F: / Program Files / Anaconda2 / Lib / site-packages v mém případě) obsahuje balíčky Pythonu, které můžete importovat. Naším cílem je zkopírovat a vložit soubor cv2.pyd do tohoto adresáře (abychom mohli použít import cv2 v našich kódech Pythonu.).

Chcete -li to provést, zkopírujte soubor cv2.pyd…

Z tohoto adresáře OpenCV (počáteční část se může na vašem počítači mírně lišit):

# Python 2.7 a 64bitový počítač: F: / opencv / build / python / 2.7 / x64# Python 2.7 a 32bitový počítač: F: / opencv / build / python / 2.7 / x84

Do tohoto adresáře Anaconda (počáteční část se může na vašem počítači mírně lišit):

F: / Program Files / Anaconda2 / Lib / site-packages

Po provedení tohoto kroku nyní budeme moci použít import cv2 v kódu Pythonu. ALE, ještě musíme udělat trochu více práce, aby FFMPEG (video kodek) fungoval (abychom mohli dělat věci, jako je zpracování videí.)

Klepněte pravým tlačítkem myši na „Tento počítač“(nebo „Tento počítač“v systému Windows 8.1)-> Klepněte levým tlačítkem na Vlastnosti-> klepněte levým tlačítkem na kartu „Upřesnit“-> klepněte levým tlačítkem na tlačítko „Proměnné prostředí…“. Přidat novou uživatelskou proměnnou abych ukázal na OpenCV (buď x86 pro 32bitový systém nebo x64 pro 64bitový systém.) Aktuálně jsem na 64bitovém počítači.

32bitový OPENCV_DIRC: / opencv / build / x86 / vc12

64-bit OPENCV_DIRC: / opencv / build / x64 / vc12

Připojte %OPENCV_DIR %\ bin k PATH proměnné uživatele.

Moje uživatelská proměnná PATH například vypadá takto…

Před:

F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts

Po:

F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin

Tím jsme skončili! FFMPEG je připraven k použití!

Krok 4: Test k potvrzení

Test k potvrzení
Test k potvrzení
Test k potvrzení
Test k potvrzení

Musíme vyzkoušet, zda je nyní můžeme provádět v Anacondě (prostřednictvím Spyder IDE):

  • Importovat balíček OpenCV
  • Použijte nástroj FFMPEG (ke čtení/zápisu/zpracování videí)

Test 1: Můžeme importovat OpenCV?

Aby se potvrdilo, že Anaconda je nyní schopna importovat balíček OpenCV-Python (konkrétně cv2), vydejte je v konzole IPython:

importovat cv2

tisk cv2._ verze_

Pokud je balíček cv2 importován v pořádku bez chyb a verze cv2 je vytištěna, pak jsme všichni dobří!

Test 2: Můžeme použít kodek FFMPEG?

Umístěte vzorek

input_video.mp4

video soubor v adresáři. Chceme vyzkoušet, zda můžeme:

  • přečtěte si tento video soubor.mp4 a
  • vypište nový soubor videa (může to být.avi nebo.mp4 atd.)

K tomu potřebujeme testovací kód pythonu, nazýváme ho test.py. Umístěte jej do stejného adresáře jako ukázka

input_video.mp4

soubor.

Tohle je co

test.py

může vypadat (Poznámka: mnohokrát díky návrhům Pete a Warrena v poli pro komentáře - původní testovací kód jsem nahradil jeho - vyzkoušejte si ho sami a dejte nám vědět, jestli to funguje lépe):

importovat cv2

cap = cv2. VideoCapture ("input_video.mp4") tisk cap.isOpened () # True = přečtení videa úspěšně. Nepravda - video nelze přečíst. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = úspěšně zapsat video. Nepravda - nepřepisování videa. cap.release () out.release ()

Tento test je VELMI DŮLEŽITÝ. Pokud chcete zpracovat video soubory, musíte zajistit, aby Anaconda / Spyder IDE mohlo používat FFMPEG (video kodek). Trvalo mi několik dní, než to fungovalo. Ale doufám, že vám to zabere mnohem méně času!:) Poznámka: ještě jeden velmi důležitý tip při používání Anaconda Spyder IDE. Nezapomeňte zkontrolovat aktuální pracovní adresář (CWD) !!!

Krok 5: Vytvořte kód pro detekci obličeje

Vytvořte kód pro detekci obličeje
Vytvořte kód pro detekci obličeje
Vytvořte kód pro detekci obličeje
Vytvořte kód pro detekci obličeje

Fotbalová branka

V této relaci

  • Uvidíme základy detekce obličeje pomocí kaskádových klasifikátorů založených na Haar Feature
  • Totéž prodloužíme pro detekci očí atd

Haar-kaskádová detekce v OpenCV

Zde se budeme zabývat detekcí. OpenCV již obsahuje mnoho předem vycvičených klasifikátorů pro obličej, oči, úsměv atd. Tyto soubory XML jsou uloženy ve složce opencv/data/haarcascades/. Vytvořme detektor obličeje a očí pomocí OpenCV. Nejprve musíme načíst požadované klasifikátory XML. Poté načtěte náš vstupní obrázek (nebo video) v režimu šedé stupnice NEBO můžeme použít kameru (pro detekci obličeje v reálném čase)

import numpy jako np

import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascadese/haarcascade_.xml ') cap = cv2. VideoCapture (0) while 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváře = face_cascade.detectMultiScale (šedá, 1,5, 5) pro (x, y, w, h) v tvářích: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = šedá [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) for (ex, ey, ew, eh) in eyes: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) tisk "nalezeno" +str (len (tváře)) +"obličej (y)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()

Krok 6: Vytvořte kód pro vytvoření datové sady

Vytvořte kód pro vytvoření datové sady
Vytvořte kód pro vytvoření datové sady
Vytvořte kód pro vytvoření datové sady
Vytvořte kód pro vytvoření datové sady

Provádíme rozpoznávání obličejů, takže budete potřebovat nějaké obrázky obličeje! Můžete buď vytvořit vlastní datovou sadu, nebo začít s jednou z dostupných databází obličejů, https://face-rec.org/databases/ vám poskytne aktuální přehled. Tři zajímavé databáze jsou (části popisu jsou citovány z

  • AT&T Facedatabase
  • Yale Facedatabase A
  • Rozšířená Yale Facedatabase B

ZDE používám vlastní datovou sadu…. Pomocí kódu, který je uveden níže:

import numpy jako np

import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('zadejte uživatelské ID') sampleN = 0; zatímco 1: ret, img = cap.read () šedá = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváře = face_cascade.detectMultiScale (šedá, 1,3, 5) pro (x, y, w, h) v obličejích: sampleN = vzorekN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", šedá [y: y+h, x: x+w]) cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) if sampleN> 20: break cap.release () cv2.destroyAllWindows ()

Krok 7: Vytvořte kód k vycvičení rozpoznávače

Vytvořte kód pro výcvik rozpoznávače
Vytvořte kód pro výcvik rozpoznávače

Vytvořte funkci pro přípravu tréninkové sady

Nyní definujeme funkci

getImagesWithID (cesta)

který vezme absolutní cestu k databázi obrázků jako vstupní argument a vrátí řazenou kolekci 2 seznamu, z nichž jeden obsahuje detekované tváře a druhý obsahuje odpovídající popisek pro tento obličej. Pokud například i -tý index v seznamu tváří představuje 5. osobu v databázi, pak odpovídající i -té umístění v seznamu popisků má hodnotu rovnou 5.

Nyní převeďte plochy datové sady (která je vytvořena v kroku 6) do souboru.yml pomocí kódu, který je uveden níže:

import os

import numpy as np import cv2 from PIL import Image # Pro rozpoznávání tváře použijeme rozpoznávání tváře LBPH Face Recognizer = cv2.createLBPHFaceRecognizer (); cesta = "F:/Program Files/projects/face_rec/facesData" def getImagesWithID (cesta): imagePaths = [os.path.join (cesta, f) pro f v os.listdir (cesta)] # tisk image_path #getImagesWithID (cesta) Faces = IDs = pro imagePath v imagePaths: # Přečtěte si obrázek a převeďte na stupně šedi FacesImg = Image.open (imagePath).convert ('L') faceNP = np.array (FacesImg, 'uint8') # Získejte štítek ID obrázku = int (os.path.split (imagePath) [-1].split (".") [1]) # Zjistěte tvář na obrázku tváře.append (faceNP) IDs.append (ID) cv2.imshow ("Přidávání obličejů k přechodu", faceNP) cv2.waitKey (10) návrat np.array (IDs), obličeje Ids, Faces = getImagesWithID (cesta) rozpoznávání.train (tváře, ID) ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()

pomocí tohoto kódu se všechny datové sady tváří převedou do jednoho souboru.yml … umístění cesty je ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")

Krok 8: Vytvořte kód k rozpoznání tváří a výsledku

Guyzz, toto je poslední krok, ve kterém můžeme vytvořit kód pro rozpoznávání tváří pomocí vaší webové kamery. V TOMTO KROKU JSOU DVĚ OPERACE, KTERÉ SE VYKONÁVAJÍ…. 1. zachycení videa z kamery 2. porovnejte jej se souborem.yml

import numpy jako npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecogni rec.load ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) while 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváře = face_cascade.detectMultiScale (šedá, 1,5, 5) pro (x, y, w, h) v plochách: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (šedá [y: y+h, x: x+w]) if (id == 2): id = "alok" if id == 1: id = "alok" if id == 3: id = "anjali" if id == 4: id = "Gaurav" if id = = 5: id = 'rahul' if id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), písmo, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()

cv2.destroyAllWindows ()

a nakonec se vám výsledek objeví před očima …… můžete si také stáhnout zip soubor z níže uvedeného odkazu: Kliknutím sem stáhnete kódy Takže v tomto pokynu jsme provedli úkol detekce obličeje+rozpoznávání pomocí OpenCV….. pokud like this instructable ….. plzzz odebírej mě a hlasuj pro mě ….. díky přátelé:)

Doporučuje: