Përmbajtje:
- Hapi 1: Instaloni Anaconda
- Hapi 2: Shkarkoni Paketën e Hapur të CV -së
- Hapi 3: Vendosni ndryshoret mjedisore
- Hapi 4: Test për të konfirmuar
- Hapi 5: Bëni Kodin për Zbulimin e Fytyrës
- Hapi 6: Bëni kodin për të krijuar grup të dhënash
- Hapi 7: Krijoni kod për të trajnuar njohësin
- Hapi 8: Bëni kod për të njohur fytyrat dhe rezultatin
Video: Zbulimi i fytyrës+njohja: 8 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:28
Ky është një shembull i thjeshtë i funksionimit të zbulimit dhe njohjes së fytyrës me OpenCV nga një aparat fotografik. SH NOTNIM: E B MR KT PRO PROJEKT P FORR KONKURS SENSOR DHE P USRDOR KAMERA SI SENSOR P TRR GJYKIM DHE FYTYRAT E NJOHJES. Pra, Qëllimi ynëNë këtë sesion, 1. Instaloni Anaconda 2. Shkarkoni Paketën e CV -së së Hapur 3. Vendosni Variablat Mjedisore 4. Testoni për të konfirmuar 5 Bëni kod për zbulimin e fytyrës 6. Bëni kod për të krijuar grupin e të dhënave 7. Bëni kod për të trajnuar njohësin 8. Bëni kod për të njohur fytyrat & Rezultati.
Hapi 1: Instaloni Anaconda
Anaconda është në thelb një Python IDE e paketuar bukur që transportohet me mijëra pako të dobishme, të tilla si NumPy, Pandas, IPython Notebook, etj. Duket se rekomandohet kudo në komunitetin shkencor. Shikoni Anaconda për ta instaluar.
Hapi 2: Shkarkoni Paketën e Hapur të CV -së
Së pari, shkoni në faqen zyrtare të OpenCV për të shkarkuar paketën e plotë të OpenCV. Zgjidhni një version që ju pëlqen (2.x ose 3.x). Unë jam në Python 2.x dhe OpenCV 2.x - kryesisht sepse kështu janë vendosur/bazuar në Udhëzimet OpenCV -Python.
Në rastin tim, unë kam nxjerrë paketën (në thelb një dosje) direkt në diskun tim F. (F: / opencv).
Hapi 3: Vendosni ndryshoret mjedisore
Kopjoni dhe ngjisni skedarin cv2.pyd
Drejtoria e paketave Anaconda Site (p.sh. F: / Program Files / Anaconda2 / Lib / site-paketat në rastin tim) përmban paketat Python që mund të importoni. Qëllimi ynë është të kopjojmë dhe ngjisim skedarin cv2.pyd në këtë drejtori (në mënyrë që të mund të përdorim cv2 të importit në kodet tona Python.).
Për ta bërë këtë, kopjoni skedarin cv2.pyd…
Nga kjo drejtori OpenCV (pjesa fillestare mund të jetë paksa e ndryshme në kompjuterin tuaj):
# Makinë Python 2.7 dhe 64-bit: F: / opencv / build / python / 2.7 / x64# Python 2.7 dhe makinë 32-bit: F: / opencv / build / python / 2.7 / x84
Për këtë drejtori Anaconda (pjesa fillestare mund të jetë paksa e ndryshme në makinën tuaj):
F: / Program Files / Anaconda2 / Lib / pako-faqe
Pas kryerjes së këtij hapi tani do të jemi në gjendje të përdorim importin cv2 në kodin Python. POR, ne ende duhet të bëjmë pak më shumë punë për të punuar FFMPEG (video codec) (për të na mundësuar që të bëjmë gjëra të tilla si përpunimi i videove.)
Klikoni me të djathtën mbi "Kompjuteri im" (ose "Ky kompjuter" në Windows 8.1)-> Klikoni me të majtën në "Karakteristikat"-> klikoni me të majtën në skedën "Avancuar"-> kliko me të majtën në butonin "Ndryshoret e mjedisit …". Shtoni një ndryshore të re të përdoruesit për të treguar OpenCV (ose x86 për sistemin 32-bit ose x64 për sistemin 64-bit.) Unë jam aktualisht në një makinë 64-bit.
32-bitOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitOPENCV_DIRC: / opencv / build / x64 / vc12
Shtojeni %OPENCV_DIR %\ bin në Rrugën e ndryshueshme të përdoruesit.
Për shembull, ndryshorja ime e përdoruesit PATH duket kështu…
Para:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Pas:
F: / Përdoruesit / Johnny / Anaconda; C: / Përdoruesit / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Kjo është ajo që ne kemi mbaruar! FFMPEG është gati për t’u përdorur!
Hapi 4: Test për të konfirmuar
Ne duhet të testojmë nëse tani mund t'i bëjmë këto në Anaconda (përmes Spyder IDE):
- Importo paketën OpenCV
- Përdorni mjetin FFMPEG (për të lexuar/shkruar/përpunuar video)
Testi 1: A mund të importojmë OpenCV?
Për të kuptuar që Anaconda tani është në gjendje të importojë paketën OpenCV-Python (domethënë, cv2), lëshojini ato në Konsolen IPython:
import cv2
print cv2._ version_
Nëse paketa cv2 importohet në rregull pa gabime, dhe versioni cv2 shtypet, atëherë të gjithë jemi mirë!
Testi 2: A mund të përdorim kodekun FFMPEG?
Vendosni një mostër
video_ input.mp4
skedar video në një drejtori. Ne duam të testojmë nëse mundemi:
- lexoni këtë skedar video.mp4, dhe
- shkruani një skedar të ri video (mund të jetë.avi ose.mp4 etj.)
Për ta bërë këtë ne duhet të kemi një kod python testues, ta quajmë test.py. Vendoseni atë në të njëjtën drejtori me mostrën
video_ input.mp4
dosje.
Kjo është ajo që
test.py
mund të duket si (Shënim: shumë falë sugjerimeve të Pete dhe Warren në fushën e komenteve - kam zëvendësuar kodin tim origjinal të testit me të tij - ju lutemi provojeni vetë dhe na tregoni nëse kjo funksionon më mirë):
import cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = lexoni videon me sukses. E rreme - nuk arrin të lexojë video. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", Fourcc, 20.0, (640, 360)) print out.isOpened () # E vërtetë = shkruaj video me sukses. False - nuk arrin të shkruajë video. cap.release () out.release ()
Ky test është SHUM I RNDSISHM. Nëse dëshironi të përpunoni skedarët video, duhet të siguroheni që Anaconda / Spyder IDE mund të përdorë FFMPEG (kodek video). M’u deshën ditë që ta punoja. Por shpresoj se do t'ju marrë shumë më pak kohë!:) Shënim: një këshillë shumë e rëndësishme kur përdorni IDE Anaconda Spyder. Sigurohuni që të kontrolloni Drejtorinë e Punës aktuale (CWD) !!!
Hapi 5: Bëni Kodin për Zbulimin e Fytyrës
Qëllimi
Në këtë seancë,
- Ne do të shohim bazat e zbulimit të fytyrës duke përdorur Klasifikuesit e Kaskadës të bazuar në Karakteristikat Haar
- Ne do të shtrijmë të njëjtën gjë për zbulimin e syve, etj
Zbulimi i kaskadës Haar në OpenCV
Këtu do të merremi me zbulimin. OpenCV tashmë përmban shumë klasifikues të para-stërvitur për fytyrën, sytë, buzëqeshjen etj. Ato skedarë XML ruhen në opencv/data/haarcascades/folder. Le të krijojmë detektor të fytyrës dhe syve me OpenCV. Së pari ne duhet të ngarkojmë klasifikuesit e kërkuar XML. Pastaj ngarkoni imazhin tonë hyrës (ose video) në modalitetin gri OSE mund të përdorim kamerën (për zbulimin e fytyrës në kohë reale)
importoni numpy si np
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/resources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/source/data/haarcascade/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascade/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/.xml ') cap = cv2. VideoCapture (0) ndërsa 1: ret, img = cap.read () gri = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) fytyrat = face_cascade.detectMultiScale (gri, 1.5, 5) për (x, y, w, h) në fytyra: cv2. drejtkëndësh (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = gri [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) për (ish, ey, ew, eh) në sy: cv2.rekëndësh (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (fytyrat)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff nëse k == 27: thyeni kapakun.release () cv2.destroyAllWindows ()
Hapi 6: Bëni kodin për të krijuar grup të dhënash
Ne po bëjmë njohjen e fytyrës, kështu që do t'ju duhet disa imazhe të fytyrës! Ju ose mund të krijoni bazën e të dhënave tuaja ose të filloni me një nga bazat e të dhënave të disponueshme të fytyrës, https://face-rec.org/databases/ ju jep një përmbledhje të azhurnuar. Tre bazat e të dhënave interesante janë (pjesë të përshkrimit janë cituar nga
- Baza e të dhënave AT&T
- Baza e të dhënave të Yale A
- Baza e zgjeruar e Yale Facedatabase B
KERTU jam duke përdorur të dhënat e mia…. Me ndihmën e kodit i cili është dhënë më poshtë:
importoni numpy si np
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/source/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter id user') mostërN = 0; ndërsa 1: ret, img = cap.read () gri = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) fytyra = face_cascade.detectMultiScale (gri, 1.3, 5) për (x, y, w, h) në fytyrat: mostërN = mostraN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/faceData/User."+str (id)+"."+str (sampleN)+".jpg", gri [y: y+h, x: x+w]) cv2.rekëndësh (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKy (100) cv2.imshow ('img', img) cv2.waitKelës (1) nëse mostra N> 20: thyerja e kapakut. lëshimi () cv2.destroyAllWindows ()
Hapi 7: Krijoni kod për të trajnuar njohësin
Krijoni funksionin për të përgatitur grupin e trajnimit
Tani, ne do të përcaktojmë një funksion
getImagesWithID (rruga)
që merr rrugën absolute në bazën e të dhënave të imazheve si argument hyrës dhe kthen dyfishin e listës 2, njëra që përmban fytyrat e zbuluara dhe tjetra që përmban etiketën përkatëse për atë faqe. Për shembull, nëse indeksi ith në listën e fytyrave përfaqëson individin e 5 -të në bazën e të dhënave, atëherë vendndodhja përkatëse me listën e etiketave ka vlerë të barabartë me 5.
Tani shndërroni fytyrat e të dhënave (e cila është krijuar në hapin 6) në skedar.yml me ndihmën e kodit i cili është dhënë më poshtë:
importo os
import numpy si np import cv2 nga PIL import Image # Për njohjen e fytyrës ne do të njohim LBPH Face Recognizer = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/faceData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (shteg) fytyrat = IDs = për imagePath në imagePaths: # Lexoni imazhin dhe shndërrohuni në fytyrë gri # Merrni etiketën e imazhit ID = int (os.path.split (imagePath) [-1].split (".") [1]) # # Zbuloni fytyrën në fytyrat e figurës. Bashkëngjitni (faceNP) IDs.append (ID) cv2.imshow ("Shtimi i fytyrave për kalimin", faceNP) cv2.waitKey (10) ktheje np.array (ID), fytyra Ids, fytyra = getImagesWithID (path) njohës. Trajnim (fytyra, ID) njohës.save ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
duke përdorur këtë kod të gjithë grupin e të dhënave të fytyrës të konvertuar në një skedar të vetëm.yml …..vendndodhja e shtegut është ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Hapi 8: Bëni kod për të njohur fytyrat dhe rezultatin
Guyzz ky është hapi i fundit në të cilin ne mund të krijojmë kodin për të njohur fytyrat me ndihmën e kamerës suaj në internet KIST ST HAPI KA JASHTO DY OPERACIONE QIC DUHEN T P KRYEN…. 1. kapjen e videos nga kamera 2. krahasojeni atë me skedarin tuaj.yml
import numpy si npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/source/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecizer 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) ndërsa 1: ret, img = cap.read () gri = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) fytyra = face_cascade.detectMultiScale (gri, 1.5, 5) për (x, y, w, h) në fytyrat: cv2. rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec. parashiko (gri [y: y+h, x: x+w]) nëse (id == 2): id = "alok" nëse id == 1: id = "alok" nëse id == 3: id = "anjali" nëse id == 4: id = "Gaurav" nëse id = = 5: id = 'rahul' nëse id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), font, 255) cv2.imshow ('img', img) nëse cv2.waitKey (1) == ord ('q'): thyerja e kapakut. lëshimi ()
cv2.destroyAllWindows ()
dhe në fund rezultati do të vijë para syve tuaj …… gjithashtu mund të shkarkoni skedarin zip nga poshtë lidhjes: Klikoni këtu për të shkarkuar kodet Pra, në këtë udhëzues kemi kryer detyrën e zbulimit të fytyrës+njohjes duke përdorur OpenCV…..nëse ju si kjo e mësueshme….. plzzz më regjistroni dhe votoni për mua…..faleminderit miq:)
Recommended:
Zbulimi, Trajnimi dhe Njohja e Fytyrës Opencv: 3 Hapa
Zbulimi, Trajnimi dhe Njohja e Fytyrës Opencv: OpenCV është një bibliotekë e vizionit kompjuterik me burim të hapur, e cila është shumë e popullarizuar për kryerjen e detyrave themelore të përpunimit të imazhit, të tilla si mjegullimi, përzierja e imazhit, përmirësimi i imazhit, si dhe cilësia e videos, pragu etj. Përveç përpunimit të imazhit, provon
Njohja dhe Identifikimi i Fytyrës - Arduino Face ID duke përdorur OpenCV Python dhe Arduino .: 6 hapa
Njohja dhe Identifikimi i Fytyrës | Arduino Face ID Duke përdorur OpenCV Python dhe Arduino .: Njohja e fytyrës ID e fytyrës AKA është një nga veçoritë më të rëndësishme në telefonat celularë në ditët e sotme. Pra, kisha një pyetje " a mund të kem një ID të fytyrës për projektin tim Arduino " dhe përgjigja është po … Udhëtimi im filloi si më poshtë: Hapi 1: Qasja tek ne
Njohja e fytyrës në praktikë: 21 hapa
Njohja e fytyrës në praktikë: Kjo është një lëndë për të cilën jam aq i magjepsur, sa më bën të humbas gjumin: Vizioni kompjuterik, zbulimi i objekteve dhe njerëzve përmes një modeli të stërvitur paraprakisht
ESP32 Njohja e Fytyrës CAM Me Mbështetje MQTT - AI-Thinker: 4 hapa
ESP32 Njohja e Fytyrës CAM Me Mbështetje MQTT | AI-Thinker: Përshëndetje! Doja të ndaja kodin tim për një projekt nëse më duhej të kisha një ESP CAM me njohjen e fytyrës, që mund të dërgonte të dhëna në MQTT. Shumë mirë .. mbase pas 7 orësh duke kërkuar shembuj të shumtë të kodit dhe duke kërkuar atë që është ajo, kam përfunduar
Njohja e fytyrës në kohë reale: një projekt nga skaji në skaj: 8 hapa (me fotografi)
Njohja e Fytyrës në kohë Reale: një Projekt nga Fundi në Fund: Në tutorialin tim të fundit që eksploroj OpenCV, mësuam ZONIMIN E OBJEKTIT TIS VIZIONIT AUTOMATIK. Tani ne do të përdorim PiCam-in tonë për të njohur fytyrat në kohë reale, siç mund ta shihni më poshtë: Ky projekt u bë me këtë " Biblioteka e Vizionit Kompjuterik me Burim të Hapur & qu