Sisukord:
- Samm: installige Anaconda
- Samm: laadige alla avatud CV -pakett
- 3. samm: määrake keskkonnamuutujad
- Samm 4: testige kinnitamiseks
- Samm: looge näotuvastuse kood
- 6. samm: andmekogumi loomiseks koodi loomine
- Samm 7: koostage kood, et treenida äratundjat
- Samm: tehke nägude ja tulemuste äratundmiseks kood
Video: Näotuvastus ja äratundmine: 8 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
See on lihtne näide kaamerast OpenCV abil töötava näotuvastuse ja tuvastamise kohta. MÄRKUS: TEGIN KÄESOLEVA PROJEKTI ANDURIKONKURSSILE JA KASUTASIN KAAMERAT ANTAJANA JÄLGIMIS- JA TUNNUSTUSNÄGUDEL. Niisiis, meie eesmärk Sellel seansil 1. Installige Anaconda 2. Laadige alla avatud CV -pakett 3. Määrake keskkonnamuutujad 4. Testi kinnitamiseks 5 Näo tuvastamise koodi tegemine 6. Andmekogumi loomiseks koodi koostamine 7. Tuvastamisseadme koolitamiseks 8. Nägude ja tulemuse tuvastamiseks koodi tegemine.
Samm: installige Anaconda
Anaconda on sisuliselt kenasti pakitud Python IDE, mis tarnitakse koos paljude kasulike pakettidega, nagu NumPy, Pandas, IPython Notebook jne. Tundub, et seda soovitatakse kõikjal teadusringkondades. Selle installimiseks vaadake Anaconda.
Samm: laadige alla avatud CV -pakett
Esiteks minge OpenCV täieliku paketi allalaadimiseks ametlikule OpenCV saidile. Valige soovitud versioon (2.x või 3.x). Ma kasutan Python 2.x ja OpenCV 2.x - peamiselt seetõttu, et nii on OpenCV -Pythoni õpetused seadistatud/põhinevad.
Minu puhul olen pakendi (sisuliselt kausta) otse oma F -draivi välja võtnud. (F: / opencv).
3. samm: määrake keskkonnamuutujad
Kopeerige ja kleepige fail cv2.pyd
Anaconda saidipakettide kataloog (nt minu puhul F: / Program Files / Anaconda2 / Lib / site-package) sisaldab Pythoni pakette, mida saate importida. Meie eesmärk on kopeerida ja kleepida fail cv2.pyd sellesse kataloogi (et saaksime kasutada import -cv2 oma Pythoni koodides.)
Selleks kopeerige fail cv2.pyd …
Sellest OpenCV kataloogist (algusosa võib teie masinas veidi erineda):
# Python 2.7 ja 64-bitine masin: F: / opencv / build / python / 2.7 / x64# Python 2.7 ja 32-bitine masin: F: / opencv / build / python / 2.7 / x84
Sellesse Anaconda kataloogi (algusosa võib teie masinal veidi erineda):
F: / Program Files / Anaconda2 / Lib / site-package
Pärast selle sammu sooritamist saame nüüd Python -koodis kasutada import -cv2 -d. AGA, me peame veel natuke tööd tegema, et FFMPEG (videokodek) tööle saada (et saaksime teha selliseid asju nagu videote töötlemine.)
Paremklõpsake nuppu "Minu arvuti" (või "See arvuti" Windows 8.1-s)-> vasakklõpsake nuppu Atribuudid-> vasakklõpsake vahekaarti "Täpsemalt"-> vasakklõpsake nuppu "Keskkonnamuutujad …". Lisage uus kasutajamuutuja osutada OpenCV-le (kas x86 32-bitise süsteemi jaoks või x64 64-bitise süsteemi jaoks.) Olen praegu 64-bitise masinaga.
32-bitine OPENCV_DIRC: / opencv / build / x86 / vc12
64-bitine OPENCV_DIRC: / opencv / build / x64 / vc12
Lisage kasutaja muutuja PATH -ile %OPENCV_DIR %\ bin.
Näiteks näeb minu PATH kasutaja muutuja välja selline …
Enne:
F: / Kasutajad / Johnny / Anaconda; C: / Kasutajad / Johnny / Anaconda / Skriptid
Pärast:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Sellega olemegi valmis! FFMPEG on kasutamiseks valmis!
Samm 4: testige kinnitamiseks
Peame testima, kas saame neid nüüd Anacondas teha (Spyder IDE kaudu):
- Importige OpenCV pakett
- Kasutage utiliiti FFMPEG (videote lugemiseks/kirjutamiseks/töötlemiseks)
Test 1: kas saame OpenCV -d importida?
Et veenduda, et Anaconda saab nüüd OpenCV-Pythoni paketi (nimelt cv2) importida, andke need välja IPython Console'is:
import cv2
printige cv2._ versioon_
Kui pakett cv2 imporditakse veatult ja cv2 versioon on välja prinditud, on meil kõik hea!
Test 2: Kas saame kasutada FFMPEG -koodekit?
Asetage proov
input_video.mp4
videofail kataloogis. Tahame testida, kas saame:
- lugege seda.mp4 videofaili ja
- kirjutage välja uus videofail (võib olla.avi või.mp4 jne)
Selleks peab meil olema testpüütoni kood, nimetage see test.py. Asetage see näidisega samasse kataloogi
input_video.mp4
faili.
See on mis
test.py
võib välja näha (Märkus: suur tänu Pete'i ja Warreni soovitustele kommentaariväljal - olen asendanud oma algse testkoodi temaga - palun katsetage seda ise ja andke meile teada, kas see töötab paremini):
import cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = video lugemine õnnestus. Vale - video lugemine ebaõnnestus. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = video edukalt välja kirjutamine. Vale - ei õnnestu videot välja kirjutada. cap.release () out.release ()
See test on VÄGA TÄHTIS. Kui soovite videofaile töödelda, peate tagama, et Anaconda / Spyder IDE saaks kasutada FFMPEG -d (videokodekit). Mul kulus päevi, kuni sain selle toimima. Aga ma loodan, et see võtab teil palju vähem aega!:) Märkus: veel üks väga oluline nõuanne Anaconda Spyder IDE kasutamisel. Kontrollige kindlasti praegust töökataloogi (CWD) !!!
Samm: looge näotuvastuse kood
Eesmärk
Sellel seansil
- Näeme näotuvastuse põhitõdesid, kasutades Haari funktsioonil põhinevaid kaskaadiklassifikaatoreid
- Laiendame sama ka silmade tuvastamiseks jne
Haar-kaskaadi tuvastamine OpenCV-s
Siin käsitleme avastamist. OpenCV sisaldab juba palju eelnevalt koolitatud näo, silmade, naeratuse jne klassifikaatoreid. Need XML-failid salvestatakse kausta opencv/data/haarcascades/. Loome OpenCV abil näo- ja silmaanduri. Kõigepealt peame laadima vajalikud XML -klassifikaatorid. Seejärel laadige meie sisendpilt (või video) halltoonide režiimis VÕI saame kasutada kaamerat (näo reaalajas tuvastamiseks)
import numpy np -na
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/haarcascade.xml ') cap = cv2. VideoCapture (0), samas kui 1: ret, img = cap.read () hall = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) näod = face_cascade.detectMultiScale (hall, 1,5, 5) x, y, w, h) nägudes: cv2. ristkülik (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = hall [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) (ex, ey, ew, eh) silmades: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "leitud" +str (len (näod)) +"nägu (d)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff, kui k == 27: break cap.release () cv2.destroyAllWindows ()
6. samm: andmekogumi loomiseks koodi loomine
Me teeme näotuvastust, seega vajate näopilte! Saate luua oma andmekogumi või alustada ühest saadaolevast näo andmebaasist, https://face-rec.org/databases/ annab teile ajakohase ülevaate. Kolm huvitavat andmebaasi on (kirjelduse osad on tsiteeritud saidilt
- AT&T näobaas
- Yale'i näobaas A
- Yale'i laiendatud näobaas B
SIIN ma kasutan oma andmekogumit…. Allpool toodud koodi abil:
import numpy np -na
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('sisesta kasutajatunnus') sampleN = 0; samas kui 1: ret, img = cap.read () hall = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) näod = face_cascade.detectMultiScale (hall, 1,3, 5) (x, y, w, h) nägudel: näideN = proovN+1; cv2.imwrite ("F:/Program Files/projektid/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", hall [y: y+h, x: x+w]) cv2. täisnurk (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) kui proov N> 20: break cap.release () cv2.destroyAllWindows ()
Samm 7: koostage kood, et treenida äratundjat
Looge treeningkomplekti ettevalmistamise funktsioon
Nüüd määratleme funktsiooni
getImagesWithID (tee)
mis võtab sisendargumendina pildi andmebaasi absoluutse tee ja tagastab loendi 2, millest üks sisaldab tuvastatud nägusid ja teine selle näo vastavat silti. Näiteks kui nägude loendi i -nda indeks tähistab andmebaasi viiendat indiviidi, on siltide loendis oleva i -nda asukoha väärtus 5.
Nüüd teisendage andmestiku näod (mis on loodud 6. toimingus).yml -failiks, kasutades allpool toodud koodi:
import os
import numpy kui np import cv2 PIL -i importimisest Pilt # Näotuvastuse jaoks kasutame LBPH näotuvastustunnistajat = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projektid/face_rec/facesData" def getImagesWithID (tee): imagePaths = [os.path.join (path, f) f jaoks os.listdir (path)] # print image_path #getImagesWithID (tee) näod = ID -d = imagePathi jaoks imagePathis: # Loe pilti ja teisenda halltoonideks # Hankige kujutise silt ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Tuvastage pildil nägu. Lisage (faceNP) ID-d. Lisage (ID) cv2.imshow ("Nägude lisamine transiidiks", faceNP) cv2.waitKey (10) tagastab np.array (ID -d), nägude ID -d, näod = getImagesWithID (tee) tunnistaja.treen (näod, ID -d) tuvastus.save ("F:/Program Files/projektid/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
selle koodi abil muudetakse kogu näo andmestik üheks.yml -failiks…..raja asukoht on ("F:/Program Files/projektid/face_rec/faceREC/trainingdata.yml")
Samm: tehke nägude ja tulemuste äratundmiseks kood
Guyzz, see on viimane samm, mille käigus saame luua veebikaamera abil koodi, mis tuvastab näod. Sellel sammul on kaks toimingut, mida kavatsetakse täita…. 1. video jäädvustamine kaamerast 2. võrrelge seda oma.yml -failiga
import numpy kui npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRec; rec.load ("F:/Program Files/projektid/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) ja 1: ret, img = cap.read () hall = cv2.cvt Värv (img, cv2. COLOR_BGR2GRAY) näod = face_cascade.detectMultiScale (hall, 1,5, 5) (x, y, w, h) nägudel: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (hall [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', kui id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), font, 255)) cv2.imshow ('img', img) kui cv2.waitKey (1) == ord ('q'): murda cap.release ()
cv2.destroyAllWindows ()
ja lõpptulemus tuli teie silme ees … … saate alla laadida ka zip -faili lingi alt: Koodide allalaadimiseks klõpsake siin nagu see õpetlik….. plzzz tellige mind ja hääletage minu poolt….. aitäh sõbrad:)
Soovitan:
Opencv näotuvastus, koolitus ja äratundmine: 3 sammu
Opencv näotuvastus, koolitus ja äratundmine: OpenCV on avatud lähtekoodiga arvutite nägemisraamatukogu, mis on väga populaarne selliste põhiliste pilditöötlusülesannete täitmisel nagu hägusus, piltide segamine, pildi ja video kvaliteedi parandamine, lävimine jne. Lisaks pilditöötlusele see tõestab
Tähtede äratundmine arvuti nägemise (OpenCV) abil: 11 sammu (piltidega)
Tähtede äratundmine arvutinägemise (OpenCV) abil: selles juhendis kirjeldatakse teile, kuidas luua arvuti nägemisprogramm, et pildil olevad tähemustrid automaatselt tuvastada. Meetod kasutab OpenCV (Open-Source Computer Vision) raamatukogu, et luua koolitatud HAAR-kaskaadid, mida saab
Näotuvastus ja tuvastamine - Arduino näotuvastus OpenCV Pythoni ja Arduino abil .: 6 sammu
Näotuvastus ja tuvastamine | Arduino näotuvastus OpenCV Pythoni ja Arduino abil .: Näotuvastus AKA näo ID on tänapäeval üks olulisemaid funktsioone mobiiltelefonides. Niisiis, mul tekkis küsimus " kas ma saan oma Arduino projekti jaoks näo -id " ja vastus on jaatav … Minu teekond algas järgmiselt: 1. samm: juurdepääs meile
Reaalajas näotuvastus RaspberryPi-4-l: 6 sammu (piltidega)
Reaalajas näotuvastus RaspberryPi-4-l: selles juhendis teeme Shunyaface'i raamatukogu abil reaalajas näotuvastuse Raspberry Pi 4-l koos Shunya O/S-iga. Seda õpetust järgides saate RaspberryPi-4 abil tuvastuskaadrisageduse 15–17 saavutada
Reaalajas näotuvastus: otsast lõpuni projekt: 8 sammu (piltidega)
Reaalajas näotuvastus: otsast lõpuni projekt: oma viimasel OpenCV-d uurival õpetusel õppisime AUTOMAATNE VISIOONI OBJEKTI JÄRGIMIST. Nüüd kasutame oma PiCami nägude reaalajas tuvastamiseks, nagu näete allpool: See projekt viidi läbi selle fantastilise "avatud lähtekoodiga arvutite nägemisraamatuga"