INHOUDSOPGAWE:
- Stap 1: Installeer Anaconda
- Stap 2: Laai Open CV -pakket af
- Stap 3: Stel omgewingsveranderlikes op
- Stap 4: Toets om te bevestig
- Stap 5: Maak kode vir gesigsopsporing
- Stap 6: Maak kode om 'n datastel te skep
- Stap 7: Maak kode om die herkenner op te lei
- Stap 8: Maak kode om die gesigte en resultaat te herken
Video: Gesigsopsporing+herkenning: 8 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Dit is 'n eenvoudige voorbeeld van gesigsopsporing en herkenning met OpenCV vanaf 'n kamera. OPMERKING: EK HET HIERDIE PROJEK GEMAAK VIR SENSORKOMPETISIE EN EK HET KAMERA AS SENSOR GEBRUIK OM GESIGTE TE SPOOR EN ERKEN. Dus, Ons doelwit In hierdie sessie, 1. Installeer Anaconda 2. Laai Open CV -pakket af 3. Stel omgewingsveranderlikes op. 4. Toets om te bevestig 5 Maak kode vir gesigsopsporing 6. Maak kode om 'n datastel te skep 7. Maak kode om die herkener op te lei 8. Maak kode om die gesigte en resultaat te herken.
Stap 1: Installeer Anaconda
Anaconda is in wese 'n mooi verpakte Python IDE wat saam met tonne nuttige pakkette, soos NumPy, Pandas, IPython Notebook, ens., Gestuur word. Dit word oral in die wetenskaplike gemeenskap aanbeveel. Kyk na Anaconda om dit geïnstalleer te kry.
Stap 2: Laai Open CV -pakket af
Gaan eers na die amptelike OpenCV -webwerf om die volledige OpenCV -pakket af te laai. Kies 'n weergawe wat u wil (2.x of 3.x). Ek is op Python 2.x en OpenCV 2.x - hoofsaaklik omdat dit is hoe die OpenCV -Python -tutoriale opgestel/gebaseer is.
In my geval het ek die pakket (in wese 'n gids) direk na my F -skyf gehaal. (F: / opencv).
Stap 3: Stel omgewingsveranderlikes op
Kopieer en plak die cv2.pyd -lêer
Die gids Anaconda Site-packages (bv. F: / Program Files / Anaconda2 / Lib / site-pakkette in my geval) bevat die Python-pakkette wat u kan invoer. Ons doel is om die cv2.pyd -lêer na hierdie gids te kopieer en te plak (sodat ons die invoer cv2 in ons Python -kodes kan gebruik.).
Om dit te doen, kopieer die cv2.pyd -lêer …
Van hierdie OpenCV -gids (die begin gedeelte kan effens anders wees op u masjien):
# Python 2.7 en 64-bis masjien: F: / opencv / build / python / 2.7 / x64# Python 2.7 en 32-bit masjien: F: / opencv / build / python / 2.7 / x84
Vir hierdie Anaconda -gids (die begin gedeelte kan effens anders wees op u masjien):
F: / Program Files / Anaconda2 / Lib / site-packages
Nadat ons hierdie stap uitgevoer het, sal ons nou invoer cv2 in Python -kode kan gebruik. MAAR, ons moet nog 'n bietjie meer werk doen om FFMPEG (videokodek) te laat werk (om ons in staat te stel om dinge soos die verwerking van video's te doen.)
Klik met die rechtermuisknop op "My rekenaar" (of "Hierdie rekenaar" in Windows 8.1)-> klik met die linkermuisknop op Eienskappe-> klik met die linkermuisknop op die blad "Gevorderd"-> klik met die linkermuisknop op "Omgewingsveranderlikes …". Voeg 'n nuwe gebruikersveranderlike by om na die OpenCV te wys (óf x86 vir 32-bis-stelsel óf x64 vir 64-bis-stelsel.) Ek is tans op 'n 64-bis-masjien.
32-bis OPENCV_DIRC: / opencv / build / x86 / vc12
64-bis OPENCV_DIRC: / opencv / build / x64 / vc12
Voeg %OPENCV_DIR %\ bin by die gebruikersveranderlike PATH.
My PATH -gebruikersveranderlike lyk byvoorbeeld so …
Voor:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Na:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Dit is dit wat ons klaar is! FFMPEG is gereed om gebruik te word!
Stap 4: Toets om te bevestig
Ons moet toets of ons dit nou in Anaconda (via Spyder IDE) kan doen:
- Voer OpenCV -pakket in
- Gebruik die FFMPEG -nut (om video's te lees/skryf/verwerk)
Toets 1: Kan ons OpenCV invoer?
Om te bevestig dat Anaconda nou die OpenCV-Python-pakket (naamlik cv2) kan invoer, reik hierdie in die IPython Console uit:
voer cv2 in
druk cv2._ weergawe_
As die pakket cv2 goed ingevoer is sonder foute en die cv2 -weergawe uitgedruk is, is dit goed met ons!
Toets 2: Kan ons die FFMPEG -kodek gebruik?
Plaas 'n monster
input_video.mp4
videolêer in 'n gids. Ons wil toets of ons kan:
- lees hierdie.mp4 videolêer, en
- skryf 'n nuwe videolêer (kan.avi of.mp4 ens.)
Om dit te kan doen, moet ons 'n toets -python -kode hê, noem dit test.py. Plaas dit in dieselfde gids as die voorbeeld
input_video.mp4
lêer.
Dit is wat
toets.py
kan lyk (let wel: baie dankie aan die voorstelle van Pete en Warren in die kommentaarveld - ek het my oorspronklike toetskode met syne vervang - toets dit self en laat ons weet of dit beter werk):
voer cv2 in
cap = cv2. VideoCapture ("input_video.mp4") druk cap.isOpened () # True = lees video suksesvol. Onwaar - lees nie die video nie. fourcc = cv2. VideoWriter_fourcc (*'XVID') uit = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) druk out.isOpened () # True = skryf video suksesvol uit. Onwaar - versuim om die video uit te skryf. cap.release () out.release ()
Hierdie toets is BAIE BELANGRIK. As u videolêers wil verwerk, moet u seker maak dat Anaconda / Spyder IDE die FFMPEG (videokodek) kan gebruik. Dit het my dae geneem om dit te laat werk. Maar ek hoop dat dit u baie minder tyd sal neem!:) Let op: nog 'n baie belangrike wenk by die gebruik van die Anaconda Spyder IDE. Maak seker dat u die Current Working Directory (CWD) nagaan !!!
Stap 5: Maak kode vir gesigsopsporing
Doel
In hierdie sessie,
- Ons sal die basiese beginsels van gesigsopsporing sien met behulp van Haar Feature-gebaseerde Cascade Classifiers
- Ons sal dieselfde uitbrei vir oogopsporing, ens
Haar-kaskade-opsporing in OpenCV
Hier gaan ons oor opsporing. OpenCV bevat reeds baie vooraf opgeleide klassifiseerders vir gesig, oë, glimlag, ens. Die XML-lêers word in opencv/data/haarcascades/folder gestoor. Kom ons maak gesig- en oogdetektor met OpenCV. Eerstens moet ons die vereiste XML -klassifiseerders laai. Laai dan ons invoerbeeld (of video) in grysskaalmodus OF ons kan die kamera gebruik (vir gesigdeteksie in reële tyd)
invoer numpy as np
invoer 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 ') pet = cv2. VideoCapture (0) terwyl 1: ret, img = cap.read () grys = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) gesigte = face_cascade.detectMultiScale (grys, 1.5, 5) vir (x, y, w, h) in vlakke: cv2.reghoek (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = grys [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] oë = eye_cascade.detectMultiScale (roi_gray) vir (ex, ey, ew, eh) in oë: cv2.reghoek (roi_color, (eks, ey), (ex +ew, ey +eh), (0, 255, 0), 2) druk "gevind" +str (len (gesigte)) +"gesig (e)" cv2.imshow ('img', img) k = cv2.waitKey (30) en 0xff as k == 27: breek cap.release () cv2.destroyAllWindows ()
Stap 6: Maak kode om 'n datastel te skep
Ons doen gesigsherkenning, so u benodig 'n paar gesigfoto's! U kan u eie datastel skep of met een van die beskikbare databasisse begin, https://face-rec.org/databases/ gee u 'n opgedateerde oorsig. Drie interessante databasisse is (dele van die beskrywing word van https://face-rec.org aangehaal):
- AT&T Facedatabase
- Yale Facedatabase A
- Uitgebreide Yale Facedatabase B
HIER gebruik ek my eie dataset….met behulp van die kode wat hieronder gegee word:
invoer numpy as np
invoer 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; terwyl 1: ret, img = cap.read () grys = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) gesigte = face_cascade.detectMultiScale (grys, 1.3, 5) vir (x, y, w, h) in gesigte: sampleN = monsterN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", grys [y: y+h, x: x+w]) cv2.reghoek (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) as monsterN> 20: breek cap.release () cv2.destroyAllWindows ()
Stap 7: Maak kode om die herkenner op te lei
Skep die funksie om die opleidingsstel voor te berei
Nou definieer ons 'n funksie
getImagesWithID (pad)
dit neem die absolute pad na die beelddatabasis as invoerargument en gee tuple van 2 lys, een met die opgespoorde vlakke en die ander met die ooreenstemmende etiket vir die gesig. Byvoorbeeld, as die ith -indeks in die lys gesigte die vyfde individu in die databasis verteenwoordig, dan het die ooreenstemmende ith -plek in die lys etikette 'n waarde gelyk aan 5.
Skakel nou die dataset -gesigte (wat in stap 6 geskep word) om na 'n.yml -lêer met behulp van die kode wat hieronder gegee word:
invoer os
invoer numpy as np invoer cv2 van PIL invoer Beeld # Vir gesigsherkenning sal ons die LBPH Face Recognizer -herkenning = 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 (pad) gesigte = ID's = vir imagePath in imagePaths: # Lees die prentjie en skakel dit oor in grysskaal gesigteImg = Image.open (imagePath).convert ('L') faceNP = np.array (facesImg, 'uint8') # Kry die etiket van die beeld-ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Ontdek die gesig in die beeld faces.append (faceNP) IDs.append (ID) cv2.imshow ("Gesigte byvoeg vir traning", faceNP) cv2.waitKey (10) terugkeer np.array (ID's), gesigte Ids, gesigte = getImagesWithID (pad) identifierer.train (gesigte, Ids) identifier.save ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
deur hierdie kode te gebruik, word alle gesigsdatastelle omskep in 'n enkele.yml -lêer …..pad -ligging is ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Stap 8: Maak kode om die gesigte en resultaat te herken
Guyzz, dit is die laaste stap waarin ons die kode kan skep om die gesigte te herken met behulp van u webcam IN HIERDIE STAP IS DAAR TWEE BEDIENINGS WAT GAAN UITVOER …. 1. neem die video op van kamera 2. vergelyk dit met u.yml -lêer
invoer numpy as npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRec; herlaai ("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) terwyl 1: ret, img = cap.read () grys = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) gesigte = face_cascade.detectMultiScale (grys, 1.5, 5) vir (x, y, w, h) in gesigte: cv2.reghoek (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (grys [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' as id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), lettertipe, 255) cv2.imshow ('img', img) as cv2.waitKey (1) == ord ('q'): breek cap.release ()
cv2.destroyAllWindows ()
en uiteindelik sal die resultaat voor u oë kom … u kan ook die zip -lêer aflaai onder die skakel: klik hier om die kodes af te laai, so in hierdie instruksies het ons die taak van gesigsopsporing+herkenning uitgevoer met behulp van OpenCV …. soos hierdie instruksies …. plzzz teken my in en stem vir my …. dankie vriende:)
Aanbeveel:
Neem wonderlike foto's met 'n iPhone: 9 stappe (met foto's)
Neem wonderlike foto's met 'n iPhone: die meeste van ons dra deesdae 'n slimfoon oral, daarom is dit belangrik om te weet hoe u u slimfoonkamera kan gebruik om fantastiese foto's te neem! Ek het net 'n paar jaar 'n slimfoon gehad, en ek hou daarvan om 'n ordentlike kamera te hê om dinge te dokumenteer wat ek
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
Opencv Gesigsopsporing, opleiding en herkenning: 3 stappe
Opencv Gesigsopsporing, opleiding en herkenning: OpenCV is 'n oopbron -rekenaarvisie -biblioteek wat baie gewild is vir die uitvoering van basiese beeldverwerkingstake soos vervaging, beeldvermenging, verbetering van beeld sowel as videokwaliteit, drempelwaarde, benewens beeldverwerking, dit bewys
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer