Turinys:
- 1 žingsnis: įdiekite „Anaconda“
- 2 veiksmas: atsisiųskite atvirą CV paketą
- 3 žingsnis: nustatykite aplinkos kintamuosius
- 4 žingsnis: išbandykite, kad patvirtintumėte
- 5 veiksmas: sukurkite veido aptikimo kodą
- 6 veiksmas: sukurkite kodą duomenų rinkiniui sukurti
- 7 veiksmas: sukurkite kodą, kad išmokytumėte atpažinimo įrenginį
- 8 veiksmas: sukurkite kodą veidams ir rezultatui atpažinti
Video: Veido aptikimas+atpažinimas: 8 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:49
Tai paprastas veidų aptikimo ir atpažinimo pavyzdys naudojant „OpenCV“iš fotoaparato. PASTABA: aš sukūriau šį projektą jutiklių konkursui ir naudoju fotoaparatą kaip jutiklį, skirtą sekti ir atpažinti veidus. Taigi, mūsų tikslas Šioje sesijoje 1. Įdiekite „Anaconda“2. Atsisiųskite atvirą CV paketą 3. Nustatykite aplinkos kintamuosius Sukurkite veido aptikimo kodą 6. Sukurkite kodą, kad sukurtumėte duomenų rinkinį 7. Sukurkite kodą, kad išmokytumėte atpažinimo įrenginį 8. Sukurkite veidų atpažinimo kodą ir rezultatą.
1 žingsnis: įdiekite „Anaconda“
„Anaconda“iš esmės yra gražiai supakuotas „Python IDE“, tiekiamas su daugybe naudingų paketų, tokių kaip „NumPy“, „Pandas“, „IPython Notebook“ir tt. Atrodo, kad tai rekomenduojama visur mokslo bendruomenėje. Patikrinkite „Anaconda“, kad ją įdiegtumėte.
2 veiksmas: atsisiųskite atvirą CV paketą
Pirmiausia eikite į oficialią „OpenCV“svetainę ir atsisiųskite visą „OpenCV“paketą. Pasirinkite jums patinkančią versiją (2.x arba 3.x). Aš naudoju „Python 2.x“ir „OpenCV 2.x“- daugiausia todėl, kad „OpenCV -Python“vadovėliai yra nustatyti/pagrįsti.
Mano atveju aš ištraukiau paketą (iš esmės aplanką) tiesiai į savo F diską. (F: / opencv).
3 žingsnis: nustatykite aplinkos kintamuosius
Nukopijuokite ir įklijuokite failą cv2.pyd
„Anaconda“svetainių paketų kataloge (pvz., F: / Program Files / Anaconda2 / Lib / site-paketai mano atveju) yra „Python“paketai, kuriuos galite importuoti. Mūsų tikslas yra nukopijuoti ir įklijuoti cv2.pyd failą į šį katalogą (kad galėtume naudoti importuojamą cv2 savo Python koduose.).
Norėdami tai padaryti, nukopijuokite failą cv2.pyd …
Iš šio „OpenCV“katalogo (pradinė dalis jūsų kompiuteryje gali šiek tiek skirtis):
# „Python 2.7“ir 64 bitų mašina: F: / opencv / build / python / 2.7 / x64# Python 2.7 ir 32 bitų mašina: F: / opencv / build / python / 2.7 / x84
Į šį „Anaconda“katalogą (pradinė dalis jūsų kompiuteryje gali šiek tiek skirtis):
F: / Program Files / Anaconda2 / Lib / site-package
Atlikę šį veiksmą, dabar galėsime naudoti importo cv2 „Python“kode. BET, mums dar reikia šiek tiek padirbėti, kad FFMPEG (vaizdo kodekas) veiktų (kad galėtume atlikti tokius veiksmus kaip vaizdo įrašų apdorojimas.)
Dešiniuoju pelės mygtuku spustelėkite „Mano kompiuteris“(arba „Šis kompiuteris“, jei naudojate „Windows 8.1“)-> kairiuoju pelės mygtuku spustelėkite „Ypatybės“-> kairiuoju pelės mygtuku spustelėkite skirtuką „Išplėstinė“-> spustelėkite kairįjį pelės klavišą „Aplinkos kintamieji …“. Pridėkite naują vartotojo kintamąjį norėdamas parodyti „OpenCV“(arba x86 32 bitų sistemai, arba x64 64 bitų sistemai.) Šiuo metu esu 64 bitų kompiuteryje.
32 bitų OPENCV_DIRC: / opencv / build / x86 / vc12
64 bitų OPENCV_DIRC: / opencv / build / x64 / vc12
Pridėti %OPENCV_DIR %\ bin prie naudotojo kintamojo PATH.
Pavyzdžiui, mano PATH vartotojo kintamasis atrodo taip …
Prieš:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Po:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Tai mes baigėme! FFMPEG yra paruoštas naudoti!
4 žingsnis: išbandykite, kad patvirtintumėte
Turime išbandyti, ar dabar galime tai padaryti „Anaconda“(per „Spyder IDE“):
- Importuoti „OpenCV“paketą
- Naudokite FFMPEG įrankį (vaizdo įrašams skaityti/rašyti/apdoroti)
1 testas: ar galime importuoti „OpenCV“?
Kad įsitikintumėte, jog „Anaconda“dabar gali importuoti „OpenCV-Python“paketą (būtent, cv2), išleiskite tai „IPython“konsolėje:
importuoti cv2
spausdinti cv2._ versija_
Jei paketas cv2 yra importuotas gerai ir be klaidų, o cv2 versija išspausdinta, tada mums viskas gerai!
2 testas: ar galime naudoti FFMPEG kodeką?
Įdėkite pavyzdį
input_video.mp4
vaizdo failą kataloge. Norime išbandyti, ar galime:
- perskaitykite šį.mp4 vaizdo failą ir
- parašykite naują vaizdo failą (gali būti.avi arba.mp4 ir tt)
Norėdami tai padaryti, turime turėti bandomąjį python kodą, pavadinkite jį test.py. Įdėkite jį į tą patį katalogą kaip pavyzdys
input_video.mp4
failą.
Štai kas
test.py
gali atrodyti taip (Pastaba: labai ačiū Pete'o ir Warreno pasiūlymams komentarų laukelyje - aš pakeičiau savo pradinį bandymo kodą į jo - išbandykite patys ir praneškite mums, ar tai veikia geriau):
importuoti cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = sėkmingai perskaitytas vaizdo įrašas. Netiesa - nepavyksta perskaityti vaizdo įrašo. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = sėkmingai išrašyti vaizdo įrašą. Netiesa - nepavyksta išrašyti vaizdo įrašo. cap.release () out.release ()
Šis testas LABAI SVARBUS. Jei norite apdoroti vaizdo failus, turite įsitikinti, kad „Anaconda“/ „Spyder IDE“gali naudoti FFMPEG (vaizdo kodeką). Prireikė dienų, kol pradėjau veikti. Bet tikiuosi, kad tai užtruks daug mažiau laiko!:) Pastaba: dar vienas labai svarbus patarimas naudojant „Anaconda Spyder IDE“. Būtinai patikrinkite dabartinį darbo katalogą (CWD) !!!
5 veiksmas: sukurkite veido aptikimo kodą
Įvartis
Šioje sesijoje,
- Pamatysime veido aptikimo pagrindus, naudojant „Haar“funkcija pagrįstus kaskadinius klasifikatorius
- Tą patį pratęsime ir akių aptikimui ir kt
Haar-kaskados aptikimas „OpenCV“
Čia mes susidursime su aptikimu. „OpenCV“jau yra daug iš anksto apmokytų veido, akių, šypsenos ir tt klasifikatorių. Tie XML failai saugomi aplanke opencv/data/haarcascades/. Sukurkime veido ir akių detektorių naudodami „OpenCV“. Pirmiausia turime įkelti reikiamus XML klasifikatorius. Tada įkelkite įvesties vaizdą (arba vaizdo įrašą) pilkų atspalvių režimu ARBA galime naudoti fotoaparatą (veido aptikimui realiuoju laiku)
importuoti numpy kaip np
importuoti 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), o 1: ret, img = cap.read () pilka = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) veidai = face_cascade.detectMultiScale (pilka, 1,5, 5), skirta [x, y, w, h) veiduose: cv2. stačiakampis (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = pilka [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray), skirta (pvz., akis, ew, eh) akims: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (veidai)) +"veidas (-ai)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff, jei k == 27: break cap.release () cv2.destroyAllWindows ()
6 veiksmas: sukurkite kodą duomenų rinkiniui sukurti
Mes atliekame veido atpažinimą, todėl jums reikės kai kurių veido vaizdų! Galite sukurti savo duomenų rinkinį arba pradėti nuo vienos iš galimų veidų duomenų bazių, https://face-rec.org/databases/ pateikiama naujausia apžvalga. Yra trys įdomios duomenų bazės (aprašymo dalys cituojamos iš
- „AT&T Facedatabase“
- Jeilio veido duomenų bazė A
- Išplėstinė „Yale“duomenų bazė B
ČIA aš naudoju savo duomenų rinkinį …. su toliau pateikto kodo pagalba:
importuoti numpy kaip np
importuoti 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; o 1: ret, img = cap.read () pilka = cv2.cvt Spalva (img, cv2. COLOR_BGR2GRAY) veidai = face_cascade.detectMultiScale (pilka, 1,3, 5), skirta (x, y, w, h) veidams: pavyzdysN = mėginysN+1; cv2.imwrite ("F:/Programos failai/projektai/face_rec/faceData/User."+str (id)+"."+str (sampleN)+".jpg", pilka [y: y+h, x: x+w]) cv2. stačiakampis (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1), jei mėginysN> 20: break cap.release () cv2.destroyAllWindows ()
7 veiksmas: sukurkite kodą, kad išmokytumėte atpažinimo įrenginį
Sukurkite treniruočių rinkinio paruošimo funkciją
Dabar mes nustatysime funkciją
getImagesWithID (kelias)
kuris kaip įvesties argumentas eina absoliučiu keliu į vaizdų duomenų bazę ir grąžina 2 sąrašo rinkinį, viename - aptikti veidai, kitame - atitinkama to veido etiketė. Pvz., Jei veidų sąrašo i -asis indeksas yra penktasis duomenų bazės asmuo, tada atitinkama etiketės sąrašo i -oji vieta yra lygi 5.
Dabar konvertuokite duomenų rinkinio veidus (sukurtą 6 veiksme) į.yml failą naudodami toliau pateiktą kodą:
importuoti
importuoti numpy kaip np importuoti cv2 iš PIL importo paveikslėlio # Veido atpažinimui naudosime LBPH veido atpažinimo įrenginį = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projektai/face_rec/faceData" def getImagesWithID (kelias): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (path) face = IDs = „imagePath“programoje „imagePaths“: # Perskaitykite vaizdą ir konvertuokite į pilkos spalvos veidusImg = Image.open (imagePath).convert ('L') faceNP = np.array (faceImg, 'uint8') # Gaukite vaizdo etiketę ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Aptikite veidą paveikslėlyje face.append (faceNP) ID.append (ID) cv2.imshow („Veidų pridėjimas, skirtas tranavimui“, faceNP) cv2.waitKey (10) grąžina np.array (ID), veidų ID, veidai = getImagesWithID (kelias) atpažinimo priemonė.traukinys (veidai, ID) atpažinimo priemonė.save ("F:/Programos failai/projektai/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
naudojant šį kodą visas veido duomenų rinkinys paverstas vienu.yml failu ….. kelio vieta yra ("F:/Program Files/projektai/face_rec/faceREC/trainingdata.yml")
8 veiksmas: sukurkite kodą veidams ir rezultatui atpažinti
Guyzz, tai yra paskutinis žingsnis, kurio metu mes galime sukurti kodą, kuris atpažintų veidus jūsų internetinės kameros pagalba. ŠIS ŽINGSNIS DU VEIKIA, KURIOS VYKDOMOS…. 1. vaizdo įrašymas iš kameros 2. palyginkite jį su savo.yml failu
importuoti numpy kaip 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/projektai/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4), o 1: ret, img = cap.read () pilka = cv2.cvt Spalva (img, cv2. COLOR_BGR2GRAY) veidai = face_cascade.detectMultiScale (pilka, 1,5, 5), skirta (x, y, w, h) veidams: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (pilka [y: y+h, x: x+w]) if (id == 2): id = "alok", jei id == 1: id = "alok", jei id == 3: id = "anjali", jei id == 4: id = "Gaurav", jei id = = 5: id = 'rahul', jei id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), šriftas, 255)) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
ir galiausiai rezultatas pasirodys prieš jūsų akis ……. taip pat galite atsisiųsti ZIP failą iš žemiau esančios nuorodos: spustelėkite čia, kad atsisiųstumėte kodus. Taigi, šioje instrukcijoje mes atlikome veido aptikimo ir atpažinimo užduotį naudodami „OpenCV“….. kaip tai pamokoma …. plzzz užsiprenumeruok mane ir balsuok už mane ….. ačiū draugai:)
Rekomenduojamas:
„Opencv“veido aptikimas, mokymas ir atpažinimas: 3 žingsniai
„Opencv“veido aptikimas, mokymas ir atpažinimas: „OpenCV“yra atviro kodo kompiuterio regėjimo biblioteka, kuri yra labai populiari atliekant pagrindines vaizdo apdorojimo užduotis, tokias kaip suliejimas, vaizdo maišymas, vaizdo ir vaizdo kokybės gerinimas, slenksčių nustatymas ir tt Be vaizdo apdorojimo, tai provokuoja
Veido atpažinimas ir identifikavimas - „Arduino“veido ID naudojant „OpenCV Python“ir „Arduino“.: 6 žingsniai
Veido atpažinimas ir atpažinimas | „Arduino“veido ID naudojant „OpenCV Python“ir „Arduino“.: Veido atpažinimas AKA veido ID yra viena iš svarbiausių šių dienų mobiliųjų telefonų funkcijų. Taigi, man kilo klausimas „ar galiu turėti savo„ Arduino “projekto ID“? ir atsakymas yra „taip“… Mano kelionė prasidėjo taip: 1 žingsnis: Prieiga prie mūsų
ESP32 CAM veido atpažinimas su MQTT palaikymu - AI mąstytojas: 4 žingsniai
ESP32 CAM veido atpažinimas su MQTT palaikymu | AI mąstytojas: Sveiki! Norėjau pasidalinti savo projekto kodu, jei man reikėjo turėti ESP CAM su veido atpažinimu, kuris galėtų išsiųsti duomenis MQTT. Taigi, gal po 7 valandų ieškojęs kelių kodų pavyzdžių ir ieškodamas, kas yra kas, turiu pabaigą
„Opencv“veido atpažinimas: 4 žingsniai
„Opencv“veido atpažinimas: Veido atpažinimas šiandien yra gana įprastas dalykas daugelyje programų, tokių kaip išmanieji telefonai, daugybė elektroninių prietaisų. Ši technologija apima daugybę algoritmų ir įrankių ir pan., Kuri naudoja kai kurias įterptas įterptas SOC platformas, tokias kaip „Raspberry“
Veido atpažinimas realiuoju laiku: visas projektas: 8 žingsniai (su nuotraukomis)
Veido atpažinimas realiuoju laiku: visapusiškas projektas: Paskutinėje pamokoje, kurioje tyrinėjau „OpenCV“, sužinojome AUTOMATINIO VISIJOS OBJEKTO SEKIMĄ. Dabar mes naudosime savo „PiCam“, kad atpažintume veidus realiuoju laiku, kaip matote žemiau: Šis projektas buvo atliktas naudojant šią fantastišką „Atviro kodo kompiuterinio matymo biblioteką“