Բովանդակություն:
- Քայլ 1: Տեղադրեք Anaconda- ն
- Քայլ 2: Ներբեռնեք բաց CV փաթեթ
- Քայլ 3: Սահմանեք շրջակա միջավայրի փոփոխականներ
- Քայլ 4: Փորձարկեք հաստատելու համար
- Քայլ 5: Կոդ կազմեք դեմքի հայտնաբերման համար
- Քայլ 6: Կոդ կազմեք ՝ տվյալների հավաքածու ստեղծելու համար
- Քայլ 7: Կոդ կազմեք ճանաչողին վերապատրաստելու համար
- Քայլ 8. Ստեղծեք ծածկագիր ՝ դեմքերը և արդյունքը ճանաչելու համար
Video: Դեմքի հայտնաբերում+ճանաչում. 8 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Սա տեսախցիկից OpenCV- ով դեմքի հայտնաբերման և ճանաչման պարզ օրինակ է: ՈEՇԱԴՐՈԹՅՈՆ. ԱՅՍ JՐԱԳՐՈԹՅՈՆԸ ՍԵՆՍՈՐ ՄՐESTՈՅԹԻ ՀԱՄԱՐ Ե AND ՕԳՏԱԳՈՐԵԼՈ AND ԵՎ RԱՆԱՉՈ F ԴԵՄՔԵՐԻ ՀԱՄԱՐ ԿԱՄԵՐԱՅԻՆ ՕԳՏԱԳՈՐԵԼ: Այսպիսով, մեր նպատակը: Այս նստաշրջանում, 1. Տեղադրեք Anaconda 2. Ներբեռնեք բաց CV փաթեթ 3. Սահմանեք բնապահպանական փոփոխականներ 4. Փորձարկեք 5 -ը հաստատելու համար: Կոդ կազմեք դեմքի հայտնաբերման համար 6. Կոդ ստեղծեք տվյալների հավաքածու ստեղծելու համար 7. Կոդ ստեղծեք ճանաչողին վարժեցնելու համար 8. Կոդ կազմեք դեմքերը ճանաչելու համար & Արդյունք:
Քայլ 1: Տեղադրեք Anaconda- ն
Anaconda- ն, ըստ էության, գեղեցիկ փաթեթավորված Python IDE է, որն առաքվում է տոննա օգտակար փաթեթներով, ինչպիսիք են NumPy, Pandas, IPython Notebook և այլն: Կարծես թե այն խորհուրդ է տրվում ամենուր գիտական համայնքում: Ստուգեք Anaconda- ն `այն տեղադրելու համար:
Քայլ 2: Ներբեռնեք բաց CV փաթեթ
Նախ, գնացեք պաշտոնական OpenCV կայք ՝ ներբեռնելու համար OpenCV ամբողջական փաթեթը: Ընտրեք ձեր նախընտրած տարբերակը (2.x կամ 3.x): Ես Python 2.x- ում և OpenCV 2.x- ում եմ, հիմնականում այն պատճառով, որ այսպես են հիմնված/հիմնված OpenCV -Python ձեռնարկները:
Իմ դեպքում, ես փաթեթը (ըստ էության թղթապանակ) հանել եմ անմիջապես իմ F սկավառակի վրա: (F: / opencv):
Քայլ 3: Սահմանեք շրջակա միջավայրի փոփոխականներ
Պատճենեք և տեղադրեք cv2.pyd ֆայլը
Anaconda Site-packages գրացուցակը (օրինակ ՝ F: / Program Files / Anaconda2 / Lib / site-packages in my case) պարունակում է Python փաթեթներ, որոնք կարող եք ներմուծել: Մեր նպատակն է պատճենել և տեղադրել cv2.pyd ֆայլը այս գրացուցակում (այնպես որ մենք կարող ենք ներմուծման cv2- ն օգտագործել մեր Python կոդերում):
Դա անելու համար պատճենեք cv2.pyd ֆայլը…
Այս OpenCV գրացուցակից (սկզբնական մասը կարող է փոքր -ինչ տարբերվել ձեր մեքենայի վրա).
# Python 2.7 և 64-բիթանոց մեքենա ՝ F: / opencv / build / python / 2.7 / x64# Python 2.7 և 32-բիթանոց մեքենա ՝ F: / opencv / build / python / 2.7 / x84
Այս Anaconda գրացուցակին (սկզբնական մասը կարող է փոքր -ինչ տարբերվել ձեր մեքենայի վրա).
F: / Program Files / Anaconda2 / Lib / site-packages
Այս քայլը կատարելուց հետո մենք այժմ կկարողանանք օգտագործել cv2 ներմուծումը Python ծածկագրում: ԲԱՅ,, մենք դեռ պետք է մի փոքր ավելի շատ աշխատանք կատարենք, որպեսզի FFMPEG- ը (վիդեո կոդեկը) աշխատի (որպեսզի մեզ հնարավորություն տա անել այնպիսի բաներ, ինչպիսիք են տեսանյութերի մշակումը):
Աջ սեղմեք «Իմ համակարգիչը» (կամ «Այս համակարգիչը» Windows 8.1-ում)-> ձախ-կտտացրեք «Հատկություններ»-> ձախ սեղմեք «Ընդլայնված» ներդիրին-> ձախ-կտտացրեք «Շրջակա միջավայրի փոփոխականներ …» կոճակին: Ավելացրեք նոր օգտվողի փոփոխական մատնանշելու համար OpenCV- ն (կամ x86 32-բիթանոց համակարգի համար, կամ x64- ը 64-բիթ համակարգերի համար): Ես այժմ 64-բիթանոց մեքենայի վրա եմ:
32-բիթ OPENCV_DIRC: / opencv / build / x86 / vc12
64-բիթ OPENCV_DIRC: / opencv / build / x64 / vc12
Օգտագործողի փոփոխական ճանապարհին կցեք %OPENCV_DIR %\ աղբարկղ:
Օրինակ, իմ PATH օգտվողի փոփոխականն այս տեսքն ունի…
Նախքան:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Հետո:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Սա այն է, ինչ մենք ավարտեցինք: FFMPEG- ը պատրաստ է օգտագործման համար:
Քայլ 4: Փորձարկեք հաստատելու համար
Մենք պետք է փորձարկենք, թե արդյոք այժմ կարող ենք դա անել Անակոնդայում (Spyder IDE- ի միջոցով).
- Ներմուծեք OpenCV փաթեթ
- Օգտագործեք FFMPEG ծրագիրը (տեսանյութեր կարդալու/գրելու/մշակելու համար)
Թեստ 1. Կարո՞ղ ենք ներմուծել OpenCV:
Համոզվելու համար, որ Anaconda- ն այժմ կարող է ներմուծել OpenCV-Python փաթեթը (մասնավորապես ՝ cv2), թողարկեք դրանք IPython վահանակում.
ներմուծել cv2
տպել cv2._ տարբերակ_
Եթե cv2 փաթեթը ներմուծվում է առանց սխալների, և cv2 տարբերակը տպված է, ապա մենք բոլորս լավն ենք:
Թեստ 2. Կարո՞ղ ենք օգտագործել FFMPEG կոդեկը:
Տեղադրեք նմուշ
input_video.mp4
վիդեո ֆայլ գրացուցակում: Մենք ցանկանում ենք ստուգել, արդյոք մենք կարող ենք.
- կարդալ այս.mp4 վիդեո ֆայլը, և
- դուրս գրեք նոր վիդեո ֆայլ (կարող է լինել.avi կամ.mp4 և այլն)
Դա անելու համար մենք պետք է ունենանք փորձնական պիթոնի ծածկագիր, այն անվանենք test.py. Տեղադրեք այն նույն գրացուցակում, ինչպես օրինակ
input_video.mp4
ֆայլը:
Սա այն է, ինչ
test.py
կարող է նման լինել (Ուշադրություն. մեկնաբանությունների դաշտում Փիթի և Ուորենի առաջարկների շնորհիվ. ես փոխարինել եմ իմ սկզբնական թեստի ծածկագիրը նրաով.
ներմուծել cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = հաջողությամբ կարդալ տեսանյութը: Սխալ - տեսանյութը կարդալ չի հաջողվում: fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = հաջողությամբ դուրս գրեք տեսանյութը: Սխալ - տեսանյութը դուրս գրել չի հաջողվում: cap.release () out.release ()
Այս թեստը ՇԱՏ ԿԱՐԵՎՈՐ է: Եթե ցանկանում եք մշակել վիդեո ֆայլեր, ապա պետք է համոզվեք, որ Anaconda / Spyder IDE- ն կարող է օգտագործել FFMPEG- ը (վիդեո կոդեկ): Ինձանից օրեր պահանջվեցին, որպեսզի այն սկսեի աշխատել: Բայց ես հույս ունեմ, որ դա ձեզանից շատ ավելի քիչ ժամանակ կպահանջի::) Նշում. Եվս մեկ շատ կարևոր հուշում Anaconda Spyder IDE- ն օգտագործելիս: Համոզվեք, որ ստուգում եք Ընթացիկ աշխատանքային գրացուցակը (CWD) !!!
Քայլ 5: Կոդ կազմեք դեմքի հայտնաբերման համար
Նպատակը
Այս նիստում,
- Մենք կտեսնենք Haar Feature- ի վրա հիմնված Կասկադի դասակարգիչների միջոցով դեմքի հայտնաբերման հիմունքները
- Նույնը մենք կտարածենք աչքերի հայտնաբերման համար և այլն
Haar-cascade Detection in OpenCV
Այստեղ մենք կզբաղվենք հայտնաբերմամբ: OpenCV- ն արդեն պարունակում է բազմաթիվ նախապես պատրաստված դասակարգիչներ `դեմքի, աչքերի, ժպիտի և այլնի համար: Այդ XML ֆայլերը պահվում են opencv/data/haarcascades/թղթապանակում: Եկեք OpenCV- ով ստեղծենք դեմքի և աչքերի դետեկտոր: Սկզբում մենք պետք է բեռնենք անհրաժեշտ XML դասակարգիչները: Այնուհետև ներմուծեք մեր մուտքի պատկերը (կամ տեսանյութը) մոխրագույն մասշտաբի ռեժիմում, կամ կարող ենք օգտագործել տեսախցիկը (իրական ժամանակում դեմքի հայտնաբերման համար)
ներմուծել numpy որպես np
ներմուծել cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/resources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/resources/data/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascade/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/hacarascade.xml ') cap = cv2. VideoCapture (0) մինչ 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) դեմքեր = face_cascade.detectMultiScale (մոխրագույն, 1.5, 5) համար (x, y, w, h) դեմքերում ՝ cv2. ուղղանկյուն (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = մոխրագույն [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) for (ex, ey, ew, eh) in eyes: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (face)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff, եթե k == 27: break cap.release () cv2.destroyAllWindows ()
Քայլ 6: Կոդ կազմեք ՝ տվյալների հավաքածու ստեղծելու համար
Մենք կատարում ենք դեմքի ճանաչում, այնպես որ ձեզ որոշ դեմքի պատկերներ են պետք: Դուք կարող եք կամ ստեղծել ձեր սեփական տվյալների հավաքածուն, կամ սկսել դեմքի առկա տվյալների շտեմարաններից մեկով, https://face-rec.org/databases/- ը ձեզ տալիս է արդի ակնարկ: Երեք հետաքրքիր շտեմարաններ են (նկարագրության մասերը մեջբերված են https://face-rec.org կայքից).
- AT&T Facedatabase
- Yale Facedatabase A
- Ընդլայնված Yale Facedatabase B
ԱՅՍՏԵ using ես օգտագործում եմ իմ սեփական տվյալների հավաքածուն….կոդի օգնությամբ, որը տրված է ստորև.
ներմուծել numpy որպես np
ներմուծել cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/resources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter user id') sampleN = 0; մինչդեռ 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) դեմքեր = face_cascade.detectMultiScale (մոխրագույն, 1.3, 5) դեմքի համար (x, y, w, h): sampleN = նմուշ N+1; cv2.imwrite ("F:/Fiրագրի ֆայլեր/նախագծեր/face_rec /acesData/User."+str (id)+"."+str (sampleN)+".jpg", մոխրագույն [y: y+h, x: x+w]) cv2. ուղղանկյուն (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.wait Բանալին (1) եթե նմուշը N> 20: ընդմիջում cap.release () cv2.destroyAllWindows ()
Քայլ 7: Կոդ կազմեք ճանաչողին վերապատրաստելու համար
Ստեղծեք ուսուցման հավաքածուի պատրաստման գործառույթ
Այժմ մենք սահմանում ենք գործառույթ
getImagesWithID (ուղի)
որը որպես մուտքի փաստարկ տանում է պատկերի տվյալների շտեմարանի բացարձակ ուղին և վերադարձնում 2 ցուցակի զույգ, որոնցից մեկը պարունակում է հայտնաբերված դեմքերը, իսկ մյուսը պարունակում է այդ դեմքի համապատասխան պիտակ: Օրինակ, եթե դեմքերի ցանկում ith ինդեքսը ներկայացնում է տվյալների բազայի 5 -րդ անհատը, ապա պիտակների ցանկում համապատասխան ith տեղադրությունը ունի 5 -ի հավասար արժեք:
Այժմ փոխակերպեք տվյալների դեմքերը (որը ստեղծվում է 6 -րդ քայլում).yml ֆայլի մեջ ՝ ստորև բերված կոդի օգնությամբ.
ներմուծել os
ներմուծել numpy որպես np ներմուծել cv2 PIL- ից ներմուծել Image # Դեմքի ճանաչման համար մենք կկատարենք 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 (ուղի) դեմքեր = IDs = imagePath- ում imagePaths- ում. # Կարդացեք պատկերը և փոխարկեք մոխրագույն երանգներ # Ստացեք նկարի ID- ի պիտակը = int (os.path.split (imagePath) [-1].split (".") [1]) # # Հայտնաբերեք պատկերի դեմքերի դեմքը: կցեք (faceNP) IDs.append (ID) cv2.imshow («Տրանզինգի համար դեմքեր ավելացնելը», faceNP) cv2.waitKey (10) վերադարձնել np.array (ID), դեմքեր Ids, դեմքեր = getImagesWithID (path) ճանաչող. Վարժեցում (դեմքեր, Ids) ճանաչիչ.պահել ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
օգտագործելով այս ծածկագիրը ՝ ամբողջ դեմքի տվյալները փոխակերպվում են մեկ.yml ֆայլի….. ճանապարհի գտնվելու վայրը («F:/Program Files/projects/face_rec/faceREC/trainingdata.yml»)
Քայլ 8. Ստեղծեք ծածկագիր ՝ դեմքերը և արդյունքը ճանաչելու համար
Guyzz սա վերջին քայլն է, որով մենք կարող ենք ստեղծել ձեր վեբ -տեսախցիկի օգնությամբ դեմքերը ճանաչելու ծածկագիրը: ԱՅՍ ՔԱՅԼԸ ԿԱ ԵՐԿՈ OP ԳՈՐATIONՈՆԵՈԹՅՈՆԸ, որոնք գնում են կատարման…: 1. տեսանկարահանում տեսախցիկից 2. համեմատեք այն ձեր.yml ֆայլի հետ
ներմուծել numpy որպես 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), իսկ 1: ret, img = cap.read () մոխրագույն = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) դեմքեր = face_cascade.detectMultiScale (մոխրագույն, 1.5, 5) (x, y, w, h) դեմքերի համար ՝ cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec. կանխատեսել (մոխրագույն [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' եթե id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), տառատեսակ, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'). ընդմիջում cap.release ()
cv2.destroyAllWindows ()
և վերջապես արդյունքը ձեր աչքի առջև կգա ……. կարող եք նաև ներբեռնել zip ֆայլը ստորև բերված հղումից. Սեղմեք այստեղ ՝ ծածկագրերը ներբեռնելու համար նման ուսանելի….. plzzz բաժանորդագրվեք ինձ և քվեարկեք իմ օգտին…..շնորհակալություն ընկերներ:)
Խորհուրդ ենք տալիս:
Opencv դեմքի հայտնաբերում, ուսուցում և ճանաչում. 3 քայլ
Opencv դեմքի հայտնաբերում, ուսուցում և ճանաչում. OpenCV- ը բաց կոդով համակարգչային տեսադարան է, որը շատ տարածված է պատկերի մշակման հիմնական առաջադրանքների կատարման համար, ինչպիսիք են ՝ պղտորումը, պատկերի միաձուլումը, պատկերի, ինչպես նաև տեսանյութի որակի բարձրացումը, շեմը և այլն: Բացի պատկերի մշակումից, դա ապացուցում է
Դեմքի ճանաչում և նույնականացում - Arduino Face ID ՝ օգտագործելով OpenCV Python և Arduino. 6 քայլ
Դեմքի ճանաչում և նույնականացում | Arduino Face ID ՝ օգտագործելով OpenCV Python և Arduino. Դեմքի ճանաչում AKA face ID- ն մեր օրերում բջջային հեռախոսների ամենակարևոր հատկություններից է: Այսպիսով, ես ունեի մի հարց " կարո՞ղ եմ ունենալ դեմքի ID իմ Arduino նախագծի համար " և պատասխանը այո է … Իմ ճանապարհորդությունը սկսվեց հետևյալ կերպ. Քայլ 1. Մուտք դեպի մեզ
Դեմքի ճանաչում պրակտիկայում. 21 քայլ
Դեմքի ճանաչում պրակտիկայում. Սա այն առարկան է, որով ես այնքան հրապուրված եմ, որ ստիպում է ինձ քնել: Համակարգչային տեսլականը, օբյեկտների և մարդկանց հայտնաբերումը նախապես պատրաստված մոդելի միջոցով
ESP32 CAM դեմքի ճանաչում MQTT աջակցությամբ - AI-Thinker: 4 քայլ
ESP32 CAM դեմքի ճանաչում MQTT աջակցությամբ | AI-Thinker. Բարև, ես ուզում էի կիսել ծրագրի իմ ծածկագիրը, եթե ինձ պետք էր ունենալ ESP CAM ՝ դեմքի ճանաչմամբ, որը կարող էր տվյալներ ուղարկել MQTT- ին: Շատ լավ: Միգուցե 7 ժամ փնտրելով բազմաթիվ կոդերի օրինակներ և փնտրելով այն, ինչ ինչ է, ես ավարտեցի
Իրական ժամանակի Դեմքի ճանաչում. Անընդհատ նախագիծ ՝ 8 քայլ (նկարներով)
Իրական ժամանակի դեմքի ճանաչում. Անընդհատ ծրագիր. OpenCV- ն ուսումնասիրող իմ վերջին ձեռնարկում մենք սովորեցինք ԱՎՏՈՄԱՏԱԿԱՆ ՎԻISԻԱՆԻ ՕԲՅԵԿՏԻ ԳՆԱՀԱՏՈՄ: Այժմ մենք կօգտագործենք մեր PiCam- ը `իրական ժամանակում դեմքերը ճանաչելու համար, ինչպես տեսնում եք ստորև