Orodha ya maudhui:
- Hatua ya 1: Sakinisha Anaconda
- Hatua ya 2: pakua Fungua Fungu la CV
- Hatua ya 3: Weka Viwango vya Mazingira
- Hatua ya 4: Jaribu Kuthibitisha
- Hatua ya 5: Fanya Nambari ya Kugundua Uso
- Hatua ya 6: Tengeneza Nambari ya Kuunda Kuweka Takwimu
- Hatua ya 7: Fanya Nambari ya Kufundisha Kitambulisho
- Hatua ya 8: Fanya Nambari ya Kutambua Nyuso na Matokeo
Video: Kugundua Uso + utambuzi: Hatua 8 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Huu ni mfano rahisi wa kugundua uso na utambuzi na OpenCV kutoka kwa kamera. KUMBUKA: NILIFANYA MRADI HUU KWA MASHINDANO YA SENSOR NA NILITUMIA KAMERA KAMA SENSOR KUFUATILIA NA NYUSO ZA UTAMBULISHO. Hivyo, Lengo letuKatika kikao hiki, 1. Sakinisha Anaconda 2. Pakua Fungua Fungu la CV 3. Weka Viwango vya Mazingira 4. Jaribio la kudhibitisha 5 Fanya nambari ya kugundua uso 6. Tengeneza nambari kuunda seti ya data 7. Fanya nambari ya kufundisha kitambulisho 8. Fanya nambari ya kutambua nyuso na Matokeo.
Hatua ya 1: Sakinisha Anaconda
Anaconda kimsingi ni vifurushi vyema vya IDE ambavyo vinasafirishwa na tani za vifurushi muhimu, kama vile NumPy, Pandas, IPbook Notebook, nk Inaonekana inapendekezwa kila mahali katika jamii ya kisayansi. Angalia Anaconda ili kuiweka.
Hatua ya 2: pakua Fungua Fungu la CV
Kwanza, nenda kwenye tovuti rasmi ya OpenCV kupakua kifurushi kamili cha OpenCV. Chagua toleo unalopenda (2.x au 3.x). Niko kwenye Python 2.x na OpenCV 2.x - haswa kwa sababu hii ndio jinsi Mafunzo ya OpenCV-Python yanavyowekwa / kulingana na.
Kwa upande wangu, nimeondoa kifurushi (kimsingi folda) moja kwa moja kwa gari langu F. (F: / opencv).
Hatua ya 3: Weka Viwango vya Mazingira
Nakili na Bandika faili ya cv2.pyd
Saraka ya vifurushi vya Tovuti ya Anaconda (k.v F: / Program Files / Anaconda2 / Lib / site-package kwa upande wangu) ina vifurushi vya Python ambavyo unaweza kuagiza. Lengo letu ni kunakili na kubandika faili ya cv2.pyd kwenye saraka hii (ili tuweze kutumia kuagiza cv2 katika nambari zetu za Python.).
Ili kufanya hivyo, nakili faili ya cv2.pyd…
Kutoka kwa saraka hii ya OpenCV (sehemu ya mwanzo inaweza kuwa tofauti kidogo kwenye mashine yako):
# Python 2.7 na mashine ya 64-bit: F: / opencv / kujenga / python / 2.7 / x64 # Mashine ya Python 2.7 na 32-bit: F: / opencv / build / python / 2.7 / x84
Kwa saraka hii ya Anaconda (sehemu ya mwanzo inaweza kuwa tofauti kidogo kwenye mashine yako):
F: / Program Files / Anaconda2 / Lib / tovuti-vifurushi
Baada ya kufanya hatua hii sasa tutaweza kutumia kuagiza cv2 katika nambari ya Python. LAKINI, bado tunahitaji kufanya kazi kidogo zaidi ili kupata FFMPEG (video codec) ifanye kazi (kutuwezesha kufanya vitu kama kusindika video.)
Bonyeza kulia kwenye "Kompyuta yangu" (au "PC hii" kwenye Windows 8.1) -> bonyeza kushoto Mali -> bonyeza kushoto "kichupo" -> bonyeza kushoto "kitufe cha Mazingira …" Ongeza Mtumiaji mpya anayebadilika. kuelekeza kwa OpenCV (ama x86 kwa mfumo wa 32-bit au x64 kwa mfumo wa 64-bit.) Hivi sasa niko kwenye mashine ya 64-bit.
32-bitOPENCV_DIRC: / opencv / kujenga / x86 / vc12
64-bitOPENCV_DIRC: / opencv / kujenga / x64 / vc12
Ongeza% OPENCV_DIR% / bin kwa Njia inayobadilika ya Mtumiaji.
Kwa mfano, tofauti yangu ya mtumiaji wa PATH inaonekana kama hii…
Kabla:
F: Watumiaji / Johnny / Anaconda; C: / Watumiaji / Johnny / Anaconda / Maandiko
Baada ya:
F: / Watumiaji / Johnny / Anaconda; C: / Watumiaji / Johnny / Anaconda / Maandiko;% OPENCV_DIR% / bin
Hii ndio tumemaliza! FFMPEG iko tayari kutumika!
Hatua ya 4: Jaribu Kuthibitisha
Tunahitaji kujaribu ikiwa sasa tunaweza kufanya haya huko Anaconda (kupitia Spyder IDE):
- Ingiza kifurushi cha OpenCV
- Tumia huduma ya FFMPEG (kusoma / kuandika / kuchakata video)
Jaribio 1: Je! Tunaweza kuagiza OpenCV?
Kukubali kwamba Anaconda sasa anaweza kuagiza kifurushi cha OpenCV-Python (yaani, cv2), toa haya kwenye Dashibodi ya IPython:
kuagiza cv2
chapisha cv2._ toleo_
Ikiwa kifurushi cv2 kinaingizwa sawa bila makosa, na toleo la cv2 limechapishwa, basi sisi sote ni wazuri!
Jaribio la 2: Je! Tunaweza Kutumia Fodhi ya FFMPEG?
Weka sampuli
video_ya kuingiza.mp4
faili ya video katika saraka. Tunataka kujaribu ikiwa tunaweza:
- soma faili ya video ya.mp4, na
- andika faili mpya ya video (inaweza kuwa.avi au.mp4 nk.)
Ili kufanya hivyo tunahitaji kuwa na nambari ya chatu ya mtihani, iite test.py. Weka kwenye saraka sawa na sampuli
video_ya kuingiza.mp4
faili.
Hii ndio
mtihani.py
inaweza kuonekana kama (Kumbuka: shukrani nyingi kwa maoni ya Pete na Warren katika uwanja wa maoni - nimebadilisha nambari yangu ya jaribio ya asili na yake - tafadhali jaribu mwenyewe na utujulishe ikiwa hii inafanya kazi vizuri):
kuagiza cv2
cap = cv2. VideoCapture ("input_video.mp4") chapa cap. Imefunguliwa () # Kweli = soma video kwa mafanikio. Uongo - shindwa kusoma video. fourcc = cv2. VideoWriter_fourcc (* 'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) chapa. imefunguliwa () # Kweli = andika video kwa mafanikio. Uongo - shindwa kuandika video. cap. tafadhali () nje. tafadhali ()
Jaribio hili ni la MUHIMU SANA. Ikiwa ungependa kusindika faili za video, utahitaji kuhakikisha kuwa Anaconda / Spyder IDE inaweza kutumia FFMPEG (video codec). Ilinichukua siku kuifanya iweze kufanya kazi. Lakini natumai itakuchukua wakati kidogo sana! Kumbuka: ncha moja muhimu zaidi wakati wa kutumia Anaconda Spyder IDE. Hakikisha ukiangalia Saraka ya Kufanya Kazi ya Sasa (CWD) !!!
Hatua ya 5: Fanya Nambari ya Kugundua Uso
Lengo
Katika kikao hiki,
- Tutaona misingi ya kugundua uso kwa kutumia Vifunguo vya Cascade vya Haar Feature
- Tutapanua sawa kwa kugundua jicho nk
Ugunduzi wa Haar-cascade katika OpenCV
Hapa tutashughulikia kugundua. OpenCV tayari ina vitangulizi vingi vya mafunzo ya awali ya uso, macho, tabasamu n.k. Faili hizo za XML zimehifadhiwa kwenye opencv / data / haarcascades / folda. Wacha tuunda kichunguzi cha uso na macho na OpenCV. Kwanza tunahitaji kupakia vitambulisho vinavyohitajika vya XML. Kisha pakia picha yetu ya kuingiza (au video) katika hali ya kijivu AU tunaweza kutumia kamera (kwa utambuzi wa uso wa wakati halisi)
kuagiza numpy kama np
kuagiza cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / vyanzo / data / haarcascades / haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / vyanzo / data / haarcascadee /.xml ') cap = cv2. VideoCapture (0) wakati 1: ret, img = cap.read () kijivu = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) nyuso = face_cascade.detectMultiScale (kijivu, 1.5, 5) kwa (x, y, w, h) katika nyuso: cv2. mstatili (img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = kijivu [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] macho = eye_cascade.detectMultiScale (roi_gray) kwa (ex, ey, ew, eh) machoni: cv2. mstatili (roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) chapa "kupatikana" + str (len (nyuso)) + "uso (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff ikiwa k == 27: kuvunja cap. tafadhali () cv2.destroyAllWindows ()
Hatua ya 6: Tengeneza Nambari ya Kuunda Kuweka Takwimu
Tunafanya utambuzi wa uso, kwa hivyo utahitaji picha za uso! Unaweza kuunda hifadhidata yako mwenyewe au uanze na hifadhidata moja inayopatikana ya uso, https://face-rec.org/databases/ inakupa muhtasari wa kisasa. Hifadhidata tatu za kupendeza ni (sehemu za maelezo zimenukuliwa kutoka
- Hifadhidata ya AT&T
- Hifadhidata ya Yale A
- Iliyohifadhiwa Yale Nyaraka B
HAPA ninatumia hifadhidata yangu mwenyewe….kwa msaada wa nambari ambayo imepewa hapa chini:
kuagiza numpy kama np
kuagiza cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / vyanzo / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('ingiza id ya mtumiaji) sampuliN = 0; wakati 1: ret, img = cap.read () kijivu = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) nyuso = face_cascade.detectMultiScale (kijivu, 1.3, 5) kwa (x, y, w, h) katika nyuso: sampuliN = sampuliN + 1; cv2.imwrite ("F: / Programu za Faili / miradi / uso_rec / nyusoData / Mtumiaji." + str (id) + "." + str (sampuliN) + ".jpg", kijivu [y: y + h, x: x + w]) cv2. mstatili (img, (x, y), (x + w, y + h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) ikiwa sampuliN> 20: kuvunja cap. tafadhali () cv2.destroyAllWindows ()
Hatua ya 7: Fanya Nambari ya Kufundisha Kitambulisho
Unda kazi ili kuandaa seti ya mafunzo
Sasa, tutafafanua kazi
getImagesWithID (njia)
hiyo inachukua njia kamili kwa hifadhidata ya picha kama hoja ya kuingiza na kurudisha Tuple ya orodha 2, moja iliyo na nyuso zilizogunduliwa na nyingine iliyo na lebo inayolingana ya uso huo. Kwa mfano, ikiwa faharisi katika orodha ya nyuso inawakilisha mtu wa 5 kwenye hifadhidata, basi eneo linalolingana katika orodha ya lebo lina thamani sawa na 5.
Sasa badilisha sura za hifadhidata (ambayo imeundwa katika hatua ya 6) kuwa faili ya.yml kwa msaada wa nambari ambayo imepewa hapa chini:
kuagiza os
kuagiza numpy kama np kuagiza cv2 kutoka PIL kuagiza Picha # Kwa utambuzi wa uso sisi kitambulisho cha Kitambulisho cha Uso cha LBPH = cv2.createLBPHFaceRecognizer (); path = "F: / Programu za Faili / miradi / uso_rec / nyusoData" def getImagesWithID (njia): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (njia) nyuso = Vitambulisho = kwa njia ya picha katika Njia za picha: # Soma picha na ubadilishe kuwa nyuso zenye rangi ya kijivu # Pata lebo ya kitambulisho cha picha = int (os.path.split (imagePath) [- 1].split (".") [1]) # Gundua uso katika sura za picha. Tumia vitambulisho vya (usoNP). (ID) cv2.imshow ("Kuongeza nyuso za kukanyaga", usoNP) cv2.waitKey (10) kurudi np.array (vitambulisho), inakabiliwa na vitambulisho, nyuso = getImagesWithID (njia) kitambulisho. Treni (nyuso, vitambulisho) kitambua. ("F: / Programu za Faili / miradi / uso_rec / usoREC / mafunzodata.yml") cv2.destroyAllWindows ()
kwa kutumia msimbo huu seti ya data zote za uso zimebadilishwa kuwa faili moja ya.l.
Hatua ya 8: Fanya Nambari ya Kutambua Nyuso na Matokeo
Guyzz hii ni hatua ya mwisho ambayo tunaweza kuunda nambari ya kutambua nyuso kwa msaada wa webcam yako 1. kunasa video kutoka kwa cam 2. linganisha na faili yako ya.yml
kuagiza numpy kama npimport cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / vyanzo / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecognizer pakua tena ("F: / Faili za Programu / miradi / uso_rec / usoREC / mafunzodata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) wakati 1: ret, img = cap.read () kijivu = cv2.cvt Rangi (img, cv2. COLOR_BGR2GRAY) nyuso = uso_cascade.detectMultiScale (kijivu, 1.5, 5) kwa (x, y, w, h) katika nyuso: cv2. img, (x, y), (x + w, y + h), (255, 0, 0), 2) id, conf = rec. tabiri (kijivu [y: y + h, x: x + w] ikiwa (id == 2): id = "alok" ikiwa id == 1: id = "alok" ikiwa id == 3: id = "anjali" ikiwa id == 4: id = "Gaurav" ikiwa id = = 5: id = 'rahul' ikiwa id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y + h), font, 255 cv2.imshow ('img', img) ikiwa cv2.waitKey (1) == ord ('q'): piga cap. tafadhali ()
cv2.destroyAll Windows ()
na mwishowe matokeo yatakuja mbele ya macho yako …… unaweza pia kupakua faili ya zip kutoka chini ya kiunga: Bonyeza hapa kupakua nambari Kwa hivyo, katika mafunzo haya tulifanya jukumu la kugundua uso + utambuzi kwa kutumia OpenCV…..kama wewe kama hii inayoweza kufundishwa….. plzzz nisajili na unipigie kura….. asante marafiki:)
Ilipendekeza:
Kugundua Uso wa Opencv, Mafunzo na Utambuzi: Hatua 3
Kugundua Uso wa Opencv, Mafunzo na Utambuzi: OpenCV ni maktaba ya maono ya kompyuta ya chanzo wazi ambayo ni maarufu sana kwa kufanya kazi za msingi za kuchakata picha kama vile kung'ara, kuchanganya picha, kuongeza picha na ubora wa video, kuzuia nk. Mbali na usindikaji wa picha, ni
Utambuzi wa Uso na Kitambulisho - Kitambulisho cha Uso cha Arduino Kutumia OpenCV Python na Arduino .: Hatua 6
Utambuzi wa Uso na Kitambulisho | Kitambulisho cha Uso cha Arduino Kutumia OpenCV Chatu na Arduino .: Utambuzi wa uso Kitambulisho cha uso cha AKA ni moja ya huduma muhimu sana kwenye simu za rununu siku hizi. Kwa hivyo, nilikuwa na swali " je! Ninaweza kuwa na kitambulisho cha uso kwa mradi wangu wa Arduino " na jibu ni ndio … Safari yangu ilianza kama ifuatavyo: Hatua ya 1: Ufikiaji wetu
Mlango wa Mlango na Utambuzi wa Uso: Hatua 7 (na Picha)
Hivi karibuni kumekuwa na wimbi la wizi katika nchi yangu ambao unalenga watu wazee katika nyumba zao. Kawaida, ufikiaji hutolewa na wenyeji wenyewe kwani wageni huwashawishi kuwa wao ni wahudumu / wauguzi. Ni
Utambuzi wa Uso Smart Lock na LTE Pi HAT: Hatua 4
Utambuzi wa Uso Smart Lock na LTE Pi HAT: Utambuzi wa uso unatumika zaidi na zaidi, tunaweza kuitumia kufanya kufuli nzuri
Utambuzi wa Uso wa wakati halisi: Mradi wa Mwisho-Mwisho: Hatua 8 (na Picha)
Utambuzi wa Uso wa wakati halisi: Mradi wa Mwisho: Kwenye mafunzo yangu ya mwisho ya kuchunguza OpenCV, tulijifunza Ufuatiliaji wa DIRA YA AUTOMATIC OBJECT. Sasa tutatumia PiCam yetu kutambua nyuso katika wakati halisi, kama unaweza kuona hapa chini: Mradi huu ulifanywa na hii ya ajabu " Maktaba ya Maono ya Kompyuta ya Open Source & qu