Innholdsfortegnelse:
- Trinn 1: Installer Anaconda
- Trinn 2: Last ned Open CV Package
- Trinn 3: Angi miljøvariabler
- Trinn 4: Test for å bekrefte
- Trinn 5: Lag kode for ansiktsgjenkjenning
- Trinn 6: Lag kode for å lage datasett
- Trinn 7: Lag kode for å trene gjenkjenneren
- Trinn 8: Lag kode for å gjenkjenne ansikter og resultat
Video: Ansiktsgjenkjenning+gjenkjenning: 8 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Dette er et enkelt eksempel på kjøring av ansiktsgjenkjenning og gjenkjenning med OpenCV fra et kamera. MERK: Jeg laget dette prosjektet for sensorkonkurranse, og jeg brukte kameraet som en sensor for å spore og anerkjenne ansikter. Så, målet vårt i denne økten, 1. installer Anaconda 2. last ned åpen CV -pakke 3. angi miljøvariabler 4. test for å bekrefte 5. Lag kode for ansiktsgjenkjenning 6. Lag kode for å lage datasett 7. Lag kode for å trene gjenkjenneren 8. Lag kode for å gjenkjenne ansikter og resultat.
Trinn 1: Installer Anaconda
Anaconda er egentlig en pent pakket Python IDE som leveres med tonnevis av nyttige pakker, for eksempel NumPy, Pandas, IPython Notebook, etc. Det ser ut til å bli anbefalt overalt i det vitenskapelige samfunnet. Ta en titt på Anaconda for å få det installert.
Trinn 2: Last ned Open CV Package
Gå først til det offisielle OpenCV -nettstedet for å laste ned hele OpenCV -pakken. Velg en versjon du liker (2.x eller 3.x). Jeg er på Python 2.x og OpenCV 2.x - hovedsakelig fordi det er slik OpenCV -Python Tutorials er satt opp/basert på.
I mitt tilfelle har jeg pakket ut pakken (egentlig en mappe) rett til min F -stasjon. (F: / opencv).
Trinn 3: Angi miljøvariabler
Kopier og lim inn cv2.pyd -filen
Katalogen Anaconda Site-packages (f.eks. F: / Program Files / Anaconda2 / Lib / site-packages i mitt tilfelle) inneholder Python-pakkene du kan importere. Målet vårt er å kopiere og lime inn cv2.pyd -filen i denne katalogen (slik at vi kan bruke import cv2 i våre Python -koder.).
For å gjøre dette, kopierer du cv2.pyd -filen …
Fra denne OpenCV -katalogen (begynnelsesdelen kan være litt annerledes på maskinen din):
# Python 2.7 og 64-biters maskin: F: / opencv / build / python / 2.7 / x64# Python 2.7 og 32-biters maskin: F: / opencv / build / python / 2.7 / x84
Til denne Anaconda -katalogen (begynnelsesdelen kan være litt annerledes på maskinen din):
F: / Program Files / Anaconda2 / Lib / site-packages
Etter å ha utført dette trinnet skal vi nå kunne bruke import cv2 i Python -kode. MEN, vi må fortsatt gjøre litt mer arbeid for å få FFMPEG (videokodek) til å fungere (for å gjøre oss i stand til å gjøre ting som å behandle videoer.)
Høyreklikk på "Min datamaskin" (eller "Denne PCen" i Windows 8.1)-> venstreklikk Egenskaper-> venstreklikk "Avansert" -fanen-> venstreklikk "Miljøvariabler …" -knappen. Legg til en ny brukervariabel for å peke på OpenCV (enten x86 for 32-biters system eller x64 for 64-biters system.) Jeg er for tiden på en 64-biters maskin.
32-biters OPENCV_DIRC: / opencv / build / x86 / vc12
64-biters OPENCV_DIRC: / opencv / build / x64 / vc12
Legg til %OPENCV_DIR %\ bin i brukervariabelbanen.
For eksempel ser PATH -brukervariabelen min slik ut …
Før:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Etter:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Dette er det vi er ferdige med! FFMPEG er klar til bruk!
Trinn 4: Test for å bekrefte
Vi må teste om vi nå kan gjøre disse i Anaconda (via Spyder IDE):
- Importer OpenCV -pakken
- Bruk FFMPEG -verktøyet (for å lese/skrive/behandle videoer)
Test 1: Kan vi importere OpenCV?
For å bekrefte at Anaconda nå er i stand til å importere OpenCV-Python-pakken (nemlig cv2), utsted disse i IPython -konsollen:
importer cv2
skriv ut cv2._ versjon_
Hvis pakken cv2 er importert ok uten feil, og cv2 -versjonen er skrevet ut, så er vi alle flinke!
Test 2: Kan vi bruke FFMPEG -kodeken?
Plasser en prøve
input_video.mp4
videofil i en katalog. Vi ønsker å teste om vi kan:
- les denne.mp4 -videofilen og
- skrive ut en ny videofil (kan være.avi eller.mp4 etc.)
For å gjøre dette må vi ha en testpythonkode, kall den test.py. Plasser den i samme katalog som prøven
input_video.mp4
fil.
Dette er hva
test.py
kan se ut (Merk: tusen takk til Petes og Warrens forslag i kommentarfeltet - jeg har byttet ut den originale testkoden med hans - vennligst test den selv og gi oss beskjed om dette fungerer bedre):
importer cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = les videoen vellykket. Falsk - unnlater å lese video. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) skriv ut.isOpened () # True = skriv ut video vellykket. Falskt - unnlater å skrive ut video. cap.release () out.release ()
Denne testen er VELDIG VIKTIG. Hvis du vil behandle videofiler, må du sørge for at Anaconda / Spyder IDE kan bruke FFMPEG (videokodek). Det tok meg dager å få det til å fungere. Men jeg håper det tar mye mindre tid!:) Merk: et annet veldig viktig tips når du bruker Anaconda Spyder IDE. Sørg for å sjekke Current Working Directory (CWD) !!!
Trinn 5: Lag kode for ansiktsgjenkjenning
Mål
I denne økten,
- Vi vil se det grunnleggende om ansiktsgjenkjenning ved hjelp av Haar Feature-baserte Cascade Classifiers
- Vi vil utvide det samme for øyedeteksjon etc.
Haar-cascade Detection i OpenCV
Her vil vi håndtere deteksjon. OpenCV inneholder allerede mange forhåndsutdannede klassifisere for ansikt, øyne, smil osv. Disse XML-filene lagres i opencv/data/haarcascades/mappe. La oss lage ansikts- og øyedetektor med OpenCV. Først må vi laste inn de nødvendige XML -klassifisererne. Last deretter inndatabildet (eller videoen) i gråtonemodus ELLER vi kan bruke kamera (for sanntids ansiktsgjenkjenning)
importer numpy som 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/haarcascades.xml ') cap = cv2. VideoCapture (0) mens 1: ret, img = cap.read () grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansikter = face_cascade.detectMultiScale (grå, 1.5, 5) for (x, y, w, h) i ansikter: cv2.rektangel (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = grå [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] øyne = eye_cascade.detectMultiScale (roi_gray) for (eks, ey, ew, eh) i øynene: cv2.rektangel (roi_color, (eks, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (ansikter)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
Trinn 6: Lag kode for å lage datasett
Vi driver med ansiktsgjenkjenning, så du trenger noen ansiktsbilder! Du kan enten lage ditt eget datasett eller starte med en av de tilgjengelige ansiktsdatabasene, https://face-rec.org/databases/ gir deg en oppdatert oversikt. Tre interessante databaser er (deler av beskrivelsen er sitert fra
- AT&T Facedatabase
- Yale Facedatabase A
- Utvidet Yale Facedatabase B
HER bruker jeg mitt eget datasett …. Ved hjelp av koden som er gitt nedenfor:
importer numpy som 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; mens 1: ret, img = cap.read () grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansikter = face_cascade.detectMultiScale (grå, 1.3, 5) for (x, y, w, h) i ansikter: sampleN = prøveN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", grå [y: y+h, x: x+w]) cv2.rektangel (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) hvis prøveN> 20: break cap.release () cv2.destroyAllWindows ()
Trinn 7: Lag kode for å trene gjenkjenneren
Lag funksjonen for å forberede treningssettet
Nå skal vi definere en funksjon
getImagesWithID (sti)
som tar den absolutte banen til bildedatabasen som inputargument og returnerer tupel av 2 liste, den ene inneholder de oppdagede ansiktene og den andre som inneholder den tilhørende etiketten for det ansiktet. Hvis for eksempel ith -indeksen i ansiktslisten representerer det femte individet i databasen, har den tilsvarende ith -plasseringen i listen over etiketter verdi lik 5.
Konverter nå datasettflatene (som er opprettet i trinn 6) til.yml -fil ved hjelp av koden som er gitt nedenfor:
import os
import numpy as np import cv2 fra PIL import Bilde # For ansiktsgjenkjenning vil vi LBPH Face Recognizer -gjenkjenningen = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/facesData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (sti) ansikter = IDer = for imagePath i imagePaths: # Les bildet og konverter til ansikt i gråtonerImg = Image.open (imagePath).convert ('L') faceNP = np.array (facesImg, 'uint8') # Få etiketten til bilde-ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Oppdag ansiktet i bildet ansikter.append (faceNP) IDs.append (ID) cv2.imshow ("Legge til ansikter for traning", faceNP) cv2.waitKey (10) returnere np.array (ID), ansikter Ids, ansikter = getImagesWithID (bane) anerkjennere.trening (ansikter, Ids) gjenkjenne.save ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
ved å bruke denne koden konverteres alle ansiktsdatasett til en.yml -fil…..baneplassering er ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Trinn 8: Lag kode for å gjenkjenne ansikter og resultat
Guyzz, dette er det siste trinnet der vi kan lage koden for å gjenkjenne ansiktene ved hjelp av webkameraet DITT TRIN ER DET TO OPERASJONER SOM KOMMER Å UTFØRE…. 1. ta videoen fra kamera 2. sammenligne den med.yml -filen
importer numpy som npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceR; 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) mens 1: ret, img = cap.read () grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansikter = face_cascade.detectMultiScale (grå, 1,5, 5) for (x, y, w, h) i ansikter: cv2.rektangel (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (grå [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), font, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
og til slutt vil resultatet komme foran øynene dine …. du kan også laste ned zip -filen fra lenken nedenfor: Klikk her for å laste ned kodene Så i denne instruksen utførte vi oppgaven med ansiktsgjenkjenning+gjenkjenning ved hjelp av OpenCV …..hvis du som denne instruerbare….. plzzz abonnere på meg og stemme på meg….. takk venner:)
Anbefalt:
Ta flotte bilder med en iPhone: 9 trinn (med bilder)
Ta flotte bilder med en iPhone: De fleste av oss har med oss en smarttelefon overalt i disse dager, så det er viktig å vite hvordan du bruker smarttelefonkameraet ditt til å ta flotte bilder! Jeg har bare hatt en smarttelefon i et par år, og jeg har elsket å ha et greit kamera for å dokumentere ting jeg
Opencv ansiktsgjenkjenning, trening og gjenkjenning: 3 trinn
Opencv ansiktsgjenkjenning, opplæring og gjenkjenning: OpenCV er et åpen kildekode datavisningsbibliotek som er veldig populært for å utføre grunnleggende bildebehandlingsoppgaver som uskarphet, bildeblanding, forbedring av bilde samt videokvalitet, terskel etc. I tillegg til bildebehandling, det beviser
Micro: bit MU Vision Sensor for Nybegynnere - Etikettverdier og gjenkjenning av tallkort: 6 trinn
Micro: bit MU Vision Sensor for Beginners - Etikettverdier og gjenkjenning av nummerkort: Dette er min andre guide til MU vision sensor. I dette prosjektet skal vi programmere micro: bit for å gjenkjenne de forskjellige tallkortene ved å bruke etikettverdier
Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: 11 trinn (med bilder)
Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: I dagens verden er trafikklys avgjørende for en trygg vei. Imidlertid kan trafikklys mange ganger være irriterende i situasjoner der noen nærmer seg lyset akkurat som det blir rødt. Dette kaster bort tid, spesielt hvis lyset er for
Flerspråklig gjenkjenning med AIY: 4 trinn
Multispråklig gjenkjenning med AIY: I verdensromsstasjoner. Det er mange astronauter der borte. N ~ astronautene kommer fra mange planeter (land). så derfor burde jeg fungere på mange språk