Obsah:
- Krok 1: Nainstalujte Anacondu
- Krok 2: Stáhněte si Open CV Package
- Krok 3: Nastavte proměnné prostředí
- Krok 4: Test k potvrzení
- Krok 5: Vytvořte kód pro detekci obličeje
- Krok 6: Vytvořte kód pro vytvoření datové sady
- Krok 7: Vytvořte kód k vycvičení rozpoznávače
- Krok 8: Vytvořte kód k rozpoznání tváří a výsledku
Video: Rozpoznání tváře+rozpoznávání: 8 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
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
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
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í
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í
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
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
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 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:
Abellcadabra (systém zámku dveří rozpoznávání tváře): 9 kroků
Abellcadabra (Dveřní zámek s rozpoznáváním tváře): Ležel jsem během karantény a snažil jsem se najít způsob, jak zabít čas vybudováním rozpoznávání tváří pro domovní dveře. Pojmenoval jsem to Abellcadabra - což je kombinace mezi Abracadabrou, kouzelnou frází s zvonkem u dveří, který beru jen zvonek. LOL
Umělá inteligence a rozpoznávání obrazu pomocí HuskyLens: 6 kroků (s obrázky)
Umělá inteligence a rozpoznávání obrazu pomocí HuskyLens: Hej, co se děje, lidi! Akarsh zde od CETech. V tomto projektu se podíváme na HuskyLens od DFRobot. Jedná se o kamerový modul poháněný AI, který je schopen provádět několik operací umělé inteligence, jako je Face Recognitio
Zrcadlo pro rozpoznávání obličeje s tajným prostorem: 15 kroků (s obrázky)
Zrcadlo pro rozpoznávání obličeje s tajným prostorem: Vždy mě fascinovaly stále kreativní tajné oddíly používané v příbězích, filmech a podobně. Když jsem tedy viděl soutěž Secret Compartment Contest, rozhodl jsem se s touto myšlenkou sám experimentovat a vytvořit obyčejně vypadající zrcadlo, které otevírá
Rozpoznávání obrazu s deskami K210 a Arduino IDE/Micropython: 6 kroků (s obrázky)
Rozpoznávání obrazu s deskami K210 a Arduino IDE/Micropython: Už jsem napsal jeden článek o tom, jak spustit demo OpenMV na Sipeed Maix Bit a také jsem udělal video demo demo detekce objektu s touto deskou. Jednou z mnoha otázek, které si lidé pokládají, je - jak poznám objekt, který neuronová síť nemá
Rozpoznávání hvězd pomocí počítačového vidění (OpenCV): 11 kroků (s obrázky)
Rozpoznávání hvězd pomocí počítačového vidění (OpenCV): Tento návod vám popíše, jak vytvořit program počítačového vidění pro automatickou identifikaci vzorů hvězd na obrázku. Metoda využívá knihovnu OpenCV (Open-Source Computer Vision) k vytvoření sady vyškolených kaskád HAAR, které lze