Obsah:
- Krok 1: Nainštalujte Anacondu
- Krok 2: Stiahnite si otvorený životopis
- Krok 3: Nastavte environmentálne premenné
- Krok 4: Test na potvrdenie
- Krok 5: Vytvorte kód na rozpoznanie tváre
- Krok 6: Vytvorte kód na vytvorenie množiny údajov
- Krok 7: Vytvorte kód na trénovanie rozpoznávača
- Krok 8: Vytvorte kód na rozpoznanie tvárí a výsledku
Video: Rozpoznanie tváre+rozpoznanie: 8 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Toto je jednoduchý príklad spustenej detekcie a rozpoznania tváre pomocou OpenCV z kamery. POZNÁMKA: VYROBIL SOM TENTO PROJEKT SÚŤAŽE SENZOROV A KAMERU SOM POUŽIL SENZOROM NA SLEDOVANIE A POZNÁVANIE TVÁROV. Takže náš cieľ V tejto relácii 1. Nainštalujte Anacondu 2. Stiahnite si otvorený balík CV 3. Nastavte environmentálne premenné 4. Test na potvrdenie 5 Vytvorte kód na rozpoznávanie tvárí 6. Vytvorte kód na vytvorenie množiny údajov 7. Vytvorte kód na školenie rozpoznávača 8. Vytvorte kód na rozpoznávanie tvárí a výsledok.
Krok 1: Nainštalujte Anacondu
Anaconda je v podstate pekne zabalené IDE Pythonu, ktoré je dodávané s množstvom užitočných balíkov, ako sú NumPy, Pandas, IPython Notebook atď. Zdá sa, že sa odporúča všade vo vedeckej komunite. Pozrite sa na Anacondu a nainštalujte ho.
Krok 2: Stiahnite si otvorený životopis
Najprv prejdite na oficiálnu stránku OpenCV a stiahnite si kompletný balík OpenCV. Vyberte si verziu, ktorá sa vám páči (2.x alebo 3.x). Používam Python 2.xa OpenCV 2.x - hlavne preto, že takto sa nastavujú/zakladajú výukové programy OpenCV -Python.
V mojom prípade som extrahoval balík (v podstate priečinok) priamo na moju jednotku F. (F: / opencv).
Krok 3: Nastavte environmentálne premenné
Skopírujte a prilepte súbor cv2.pyd
Adresár balíkov stránok Anaconda (napr. F: / Program Files / Anaconda2 / Lib / site-packages v mojom prípade) obsahuje balíky Pythonu, ktoré môžete importovať. Našim cieľom je skopírovať a prilepiť súbor cv2.pyd do tohto adresára (aby sme mohli použiť import cv2 v našich kódoch Pythonu.).
Za týmto účelom skopírujte súbor cv2.pyd …
Z tohto adresára OpenCV (počiatočná časť sa môže na vašom počítači mierne líšiť):
# Python 2.7 a 64-bitový počítač: F: / opencv / build / python / 2.7 / x64# Python 2.7 a 32-bitový počítač: F: / opencv / build / python / 2.7 / x84
Do tohto adresára Anaconda (počiatočná časť sa môže na vašom počítači mierne líšiť):
F: / Program Files / Anaconda2 / Lib / site-packages
Po vykonaní tohto kroku budeme teraz môcť používať import cv2 v kóde Pythonu. ALE, musíme ešte urobiť trochu viac práce, aby FFMPEG (video kodek) fungoval (aby sme mohli vykonávať napríklad spracovanie videa).
Kliknite pravým tlačidlom myši na položku „Tento počítač“(alebo „Tento počítač“v systéme Windows 8.1)-> Ľavé tlačidlo myši kliknite na položku Vlastnosti-> kliknite ľavým tlačidlom myši na kartu „Rozšírené“-> kliknite ľavým tlačidlom myši na tlačidlo „Premenné prostredia …“. Pridajte novú používateľskú premennú aby som ukázal na OpenCV (buď x86 pre 32-bitový systém alebo x64 pre 64-bitový systém.) Aktuálne som na 64-bitovom počítači.
32-bitový OPENCV_DIRC: / opencv / build / x86 / vc12
64-bitový OPENCV_DIRC: / opencv / build / x64 / vc12
Pripojte %OPENCV_DIR %\ bin k PATH premennej užívateľa.
Moja používateľská premenná PATH napríklad vyzerá takto …
Pred:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Po:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Týmto sme skončili! FFMPEG je pripravený na použitie!
Krok 4: Test na potvrdenie
Musíme otestovať, či to teraz môžeme urobiť v Anaconde (prostredníctvom Spyder IDE):
- Importovať balík OpenCV
- Použite nástroj FFMPEG (na čítanie/zápis/spracovanie videí)
Test 1: Môžeme importovať OpenCV?
Aby sa potvrdilo, že Anaconda je teraz schopná importovať balík OpenCV-Python (konkrétne cv2), problém v konzole IPython:
import cv2
vytlačiť cv2._ verziu_
Ak je balík cv2 importovaný v poriadku bez chýb a verzia cv2 je vytlačená, potom sme všetci v poriadku!
Test 2: Môžeme použiť kodek FFMPEG?
Vložte vzorku
input_video.mp4
video súbor v adresári. Chceme vyskúšať, či môžeme:
- prečítajte si tento video súbor.mp4 a
- napíšte nový súbor videa (môže to byť.avi alebo.mp4 atď.)
Na to potrebujeme testovací kód pythonu, nazvite ho test.py. Umiestnite ho do rovnakého adresára ako vzor
input_video.mp4
súbor.
To je čo
test.py
môže vyzerať (Poznámka: veľká vďaka Peteovým a Warrenovým návrhom v poli pre komentáre - pôvodný testovací kód som nahradil jeho - vyskúšajte si to sami a dajte nám vedieť, či to funguje lepšie):
import cv2
cap = cv2. VideoCapture ("input_video.mp4") vytlač cap.isOpened () # True = video bolo úspešne prečítané. Falošné - nečítajte video. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = úspešne zapísať video. Falošné - neschopnosť napísať video. cap.release () out.release ()
Tento test je VEĽMI DÔLEŽITÝ. Ak chcete spracovávať video súbory, musíte zaistiť, aby Anaconda / Spyder IDE mohlo používať FFMPEG (video kodek). Trvalo mi niekoľko dní, kým sa to podarilo. Dúfam však, že vám to zaberie oveľa menej času!:) Poznámka: ešte jeden veľmi dôležitý tip pri použití IDE Anaconda Spyder. Nezabudnite skontrolovať aktuálny pracovný adresár (CWD) !!!
Krok 5: Vytvorte kód na rozpoznanie tváre
Cieľ
V tejto relácii
- Uvidíme základy detekcie tváre pomocou kaskádových klasifikátorov založených na funkciách Haar
- Predĺžime to isté pre detekciu očí atď
Haar-kaskádová detekcia v OpenCV
Tu sa budeme zaoberať detekciou. OpenCV už obsahuje mnoho vopred vyškolených klasifikátorov pre tvár, oči, úsmev atď. Tieto súbory XML sú uložené v priečinku opencv/data/haarcascades/. Vytvorme detektor tváre a očí s OpenCV. Najprv musíme načítať požadované klasifikátory XML. Potom načítajte náš vstupný obrázok (alebo video) v režime sivej alebo ALEBO môžeme použiť fotoaparát (na detekciu tváre v reálnom čase)
import numpy ako 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/haarcascadee/haarcascade_.xml ') cap = cv2. VideoCapture (0) while 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (grey, 1.5, 5) for (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] 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) print "found" +str (len (faces)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
Krok 6: Vytvorte kód na vytvorenie množiny údajov
Vykonávame rozpoznávanie tvárí, takže budete potrebovať nejaké obrázky tváre! Môžete si vytvoriť svoj vlastný súbor údajov alebo začať s jednou z dostupných databáz tvárí, https://face-rec.org/databases/ vám poskytne aktuálny prehľad. Tri zaujímavé databázy sú (časti popisu sú citované z
- Databáza AT&T
- Yale Facedatabase A
- Rozšírená Yale Facedatabase B
TU používam svoj vlastný súbor údajov … pomocou kódu, ktorý je uvedený nižšie:
import numpy ako 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 ('enter user id') sampleN = 0; zatiaľ čo 1: ret, img = cap.read () sivá = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváre = face_cascade.detectMultiScale (sivá, 1,3, 5) pre (x, y, w, h) v tvárach: sampleN = vzorkaN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", sivá [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) ak je vzorka N> 20: break cap.release () cv2.destroyAllWindows ()
Krok 7: Vytvorte kód na trénovanie rozpoznávača
Vytvorte funkciu na prípravu tréningovej sady
Teraz definujeme funkciu
getImagesWithID (cesta)
ako vstupný argument vezme absolútnu cestu k databáze obrázkov a vráti n -ticu z 2 zoznamov, pričom jeden obsahuje rozpoznané tváre a druhý obsahuje zodpovedajúci štítok pre túto tvár. Ak napríklad desiaty index v zozname tvárí predstavuje piateho jedinca v databáze, zodpovedajúce desiate miesto v zozname štítkov má hodnotu rovnú 5.
Teraz pomocou kódu, ktorý je uvedený nižšie, skonvertujte tváre súboru údajov (ktorý je vytvorený v kroku 6) na súbor.yml:
import os
import numpy as np import cv2 from PIL import Image # Na rozpoznanie tváre použijeme rozpoznávač tváre LBPH Recognizer = cv2.createLBPHFaceRecognizer (); cesta = "F:/Program Files/projects/face_rec/facesData" def getImagesWithID (cesta): imagePaths = [os.path.join (cesta, f) pre f v os.listdir (cesta)] # print image_path #getImagesWithID (cesta) tváre = IDs = pre imagePath v imagePaths: # Prečítajte si obrázok a preveďte na obrázky v odtieňoch sivej facesImg = Image.open (imagePath).convert ('L') faceNP = np.array (FacesImg, 'uint8') # Získajte štítok ID obrázka = int (os.path.split (imagePath) [-1].split (".") [1]) # Rozpoznajte tvár na obrázku tváře.append (faceNP) IDs.append (ID) cv2.imshow ("Pridávanie tvárí na prechod", faceNP) cv2.waitKey (10) návrat np.array (IDs), tváre Ids, Faces = getImagesWithID (cesta) rozpoznávač.train (tváre, ID) ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
pomocou tohto kódu sa všetky množiny údajov o tvári prevedú na jeden súbor.yml … umiestnenie cesty je ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Krok 8: Vytvorte kód na rozpoznanie tvárí a výsledku
Guyzz, toto je posledný krok, v ktorom môžeme vytvoriť kód na rozpoznávanie tvárí pomocou vašej webovej kamery. V TOMTO KROKU JSÚ DVA OPERÁCIE, KTORÉ MAJÚ VYKONAŤ…. 1. zachytenie videa z kamery 2. porovnajte ho so súborom.yml
import numpy ako npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecogzer 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 () sivá = cv2.cvtColor (img, cv2. COLOR_BGR2GREY) tváre = face_cascade.detectMultiScale (sivá, 1,5, 5) pre (x, y, w, h) v tvárach: cv2.rectangle (obr., (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = predpokladaný predikcia (sivá [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 nakoniec sa vám výsledok objaví pred očami ……. Môžete si tiež stiahnuť súbor zip z nižšie uvedeného odkazu: Kliknutím sem stiahnete kódy. V tomto návode sme teda vykonali úlohu detekcie tváre+rozpoznania pomocou OpenCV….. ak lajkujte takto ….. plzzz ma prihláste na odber a hlasujte za mňa ….. ďakujem priatelia:)
Odporúča:
DIY 37 ruletová hra s ruletou Arduino: 3 kroky (s obrázkami)
DIY 37 Leds Arduino Roulette Game: Roulette je kasínová hra pomenovaná podľa francúzskeho slova, ktoré znamená malé koliesko
Ochranná prilba Covid, časť 1: Úvod do obvodov Tinkercad!: 20 krokov (s obrázkami)
Helma Covid Časť 1: Úvod do obvodov Tinkercad !: Dobrý deň, priateľu! V tejto dvojdielnej sérii sa naučíme používať Tinkercad's Circuits - zábavný, výkonný a vzdelávací nástroj na zoznámenie sa s fungovaním obvodov! Jeden z najlepších spôsobov, ako sa učiť, je robiť. Najprv teda navrhneme náš vlastný projekt:
Internetové rádio BOSEBerry Pi: 4 kroky (s obrázkami)
Internetové rádio BOSEBerry Pi: Rád počúvam rádio! Doma som používal rádio DAB, ale zistil som, že príjem je trochu nerovnomerný a zvuk sa stále prerušuje, a tak som sa rozhodol postaviť si vlastné internetové rádio. Okolo domu a digitálneho signálu mám silný signál Wi -Fi
Ako: Inštalácia Raspberry PI 4 bezhlavého (VNC) s obrazovým procesorom Rpi a obrázkami: 7 krokov (s obrázkami)
Ako na to: Inštalácia Raspberry PI 4 bez hlavy (VNC) s obrázkom Rpi a obrázkami: Plánujem použiť tento nástroj Rapsberry PI v mnohých zábavných projektoch späť na mojom blogu. Neváhajte sa na to pozrieť. Chcel som sa vrátiť k používaniu svojho Raspberry PI, ale na novom mieste som nemal klávesnicu ani myš. Chvíľu to bolo, odkedy som nastavil Raspberry
Inteligentný zámok na rozpoznanie tváre s LTE Pi HAT: 4 kroky
Inteligentný zámok na rozpoznávanie tváre S LTE Pi HAT: Rozpoznávanie tváre je stále viac používané, môžeme ho použiť na výrobu inteligentného zámku