Satura rādītājs:
- 1. darbība: instalējiet Anaconda
- 2. darbība: lejupielādējiet atvērto CV pakotni
- 3. darbība: iestatiet vides mainīgos
- 4. darbība: pārbaudiet, lai apstiprinātu
- 5. darbība: izveidojiet kodu sejas noteikšanai
- 6. darbība: izveidojiet kodu datu kopas izveidei
- 7. darbība: izveidojiet kodu, lai apmācītu atpazīšanas ierīci
- 8. darbība: izveidojiet kodu, lai atpazītu sejas un rezultātu
Video: Sejas noteikšana+atpazīšana: 8 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:58
Šis ir vienkāršs sejas noteikšanas un atpazīšanas piemērs, izmantojot OpenCV no kameras. PIEZĪME: Es šo projektu izstrādāju sensoru konkursam, un es izmantoju kameru kā sensoru, lai izsekotu un atpazītu sejas. Tātad, mūsu mērķis Šajā sesijā 1. instalējiet Anaconda 2. lejupielādējiet atvērto CV paketi 3. iestatiet vides mainīgos 4. pārbaudiet, lai apstiprinātu 5 Izveidojiet kodu sejas noteikšanai 6. Izveidojiet kodu, lai izveidotu datu kopu 7. Izveidojiet kodu, lai apmācītu atpazīstamību 8. Izveidojiet kodu, lai atpazītu sejas un rezultātu.
1. darbība: instalējiet Anaconda
Anaconda būtībā ir labi iepakots Python IDE, kas tiek piegādāts kopā ar daudzām noderīgām pakotnēm, piemēram, NumPy, Pandas, IPython Notebook uc. Šķiet, ka tas ir ieteicams visur zinātnieku aprindās. Apskatiet Anaconda, lai to instalētu.
2. darbība: lejupielādējiet atvērto CV pakotni
Pirmkārt, dodieties uz oficiālo OpenCV vietni, lai lejupielādētu visu OpenCV pakotni. Izvēlieties versiju, kas jums patīk (2.x vai 3.x). Es izmantoju Python 2.x un OpenCV 2.x - galvenokārt tāpēc, ka šādi tiek iestatītas/balstītas OpenCV -Python apmācības.
Manā gadījumā iepakojumu (būtībā mapi) esmu izvilcis tieši savā F diskā. (F: / opencv).
3. darbība: iestatiet vides mainīgos
Kopējiet un ielīmējiet cv2.pyd failu
Anaconda vietņu pakotņu direktorijā (piemēram, F: / Program Files / Anaconda2 / Lib / site-package manā gadījumā) ir Python pakotnes, kuras varat importēt. Mūsu mērķis ir nokopēt un ielīmēt cv2.pyd failu šajā direktorijā (lai mēs varētu izmantot importēto cv2 savos Python kodos.).
Lai to izdarītu, kopējiet cv2.pyd failu …
No šī OpenCV direktorija (sākuma daļa jūsu ierīcē var nedaudz atšķirties):
# Python 2.7 un 64 bitu mašīna: F: / opencv / build / python / 2.7 / x64# Python 2.7 un 32 bitu mašīna: F: / opencv / build / python / 2.7 / x84
Šajā Anaconda direktorijā (sākuma daļa jūsu ierīcē var nedaudz atšķirties):
F: / Program Files / Anaconda2 / Lib / site-Packages
Pēc šīs darbības veikšanas mēs tagad varēsim izmantot importa cv2 Python kodā. BET, mums vēl ir jāpaveic nedaudz vairāk, lai FFMPEG (video kodeks) darbotos (lai mēs varētu veikt tādas darbības kā video apstrāde.)
Ar peles labo pogu noklikšķiniet uz "Mans dators" (vai "Šis dators" operētājsistēmā Windows 8.1)-> ar peles kreiso pogu noklikšķiniet uz Rekvizīti-> ar peles kreiso pogu noklikšķiniet uz cilnes "Papildu"-> ar peles kreiso pogu noklikšķiniet uz pogas "Vides mainīgie …". Pievienojiet jaunu lietotāja mainīgo lai norādītu uz OpenCV (vai nu x86 32 bitu sistēmai, vai x64 64 bitu sistēmai.) Pašlaik es izmantoju 64 bitu mašīnu.
32 bitu OPENCV_DIRC: / opencv / build / x86 / vc12
64 bitu OPENCV_DIRC: / opencv / build / x64 / vc12
Pievienot %OPENCV_DIR %\ bin lietotāja mainīgajam ceļam.
Piemēram, mans PATH lietotāja mainīgais izskatās šādi …
Pirms:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Pēc:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Tas ir tas, ko mēs esam paveikuši! FFMPEG ir gatavs lietošanai!
4. darbība: pārbaudiet, lai apstiprinātu
Mums ir jāpārbauda, vai tagad varam to darīt Anakondā (izmantojot Spyder IDE):
- Importēt OpenCV pakotni
- Izmantojiet FFMPEG utilītu (video lasīšanai/rakstīšanai/apstrādei)
1. tests: vai mēs varam importēt OpenCV?
Lai apstiprinātu, ka Anaconda tagad var importēt OpenCV-Python pakotni (proti, cv2), izsniedziet tos IPython konsolē:
importēt cv2
drukāt cv2._ versiju_
Ja pakotne cv2 ir importēta pareizi bez kļūdām un tiek izdrukāta cv2 versija, tad mums visiem ir labi!
2. tests: vai mēs varam izmantot FFMPEG kodeku?
Novietojiet paraugu
input_video.mp4
video failu direktorijā. Mēs vēlamies pārbaudīt, vai varam:
- izlasiet šo.mp4 video failu un
- uzrakstiet jaunu video failu (var būt.avi vai.mp4 utt.)
Lai to izdarītu, mums ir jābūt testa python kodam, ko sauc par test.py. Ievietojiet to tajā pašā direktorijā kā paraugs
input_video.mp4
failu.
Tas ir tas
test.py
var izskatīties šādi:
importēt cv2
cap = cv2. VideoCapture ("input_video.mp4") drukāt cap.isOpened () # True = veiksmīgi izlasīts video. Nepareizi - neizdodas nolasīt video. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = veiksmīgi izrakstīts video. Nepareizi - neizdodas izrakstīt video. cap.release () out.release ()
Šis tests ir ĻOTI SVARĪGS. Ja vēlaties apstrādāt video failus, jums jāpārliecinās, ka Anaconda / Spyder IDE var izmantot FFMPEG (video kodeku). Man vajadzēja vairākas dienas, lai to panāktu. Bet es ceru, ka jums tas prasīs daudz mazāk laika!:) Piezīme: vēl viens ļoti svarīgs padoms, lietojot Anaconda Spyder IDE. Noteikti pārbaudiet pašreizējo darba direktoriju (CWD) !!!
5. darbība: izveidojiet kodu sejas noteikšanai
Mērķis
Šajā sesijā
- Mēs redzēsim sejas noteikšanas pamatus, izmantojot Haar Feature Cascade Classifiers
- Mēs paplašināsim to pašu attiecībā uz acu noteikšanu utt
Haar-kaskādes noteikšana OpenCV
Šeit mēs risināsim atklāšanu. OpenCV jau satur daudz iepriekš apmācītu sejas, acu, smaida uc klasifikatoru. Šie XML faili tiek saglabāti mapē opencv/data/haarcascades/. Izveidosim sejas un acu detektoru ar OpenCV. Vispirms mums jāielādē nepieciešamie XML klasifikatori. Pēc tam ielādējiet mūsu ievades attēlu (vai video) pelēktoņu režīmā VAI mēs varam izmantot kameru (reālā laika sejas noteikšanai)
importēt numpy kā np
importēt 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), kamēr 1: ret, img = cap.read () pelēks = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) sejas = face_cascade.detectMultiScale (pelēks, 1.5, 5) x, y, w, h) sejās: cv2. taisnstūris (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = pelēks [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) (ex, ey, ew, eh) acīs: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (sejas)) +"seja (-s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff, ja k == 27: break cap.release () cv2.destroyAllWindows ()
6. darbība: izveidojiet kodu datu kopas izveidei
Mēs veicam sejas atpazīšanu, tāpēc jums būs nepieciešami daži sejas attēli! Jūs varat vai nu izveidot savu datu kopu, vai sākt ar kādu no pieejamajām sejas datu bāzēm, https://face-rec.org/databases/ sniedz jums aktuālu pārskatu. Ir trīs interesantas datu bāzes (apraksta daļas ir citētas no vietnes
- AT&T Facedatabase
- Jēlas sejas datu bāze A.
- Paplašinātā Jēlas sejas datu bāze B
ŠEIT es izmantoju savu datu kopu …. ar zemāk norādītā koda palīdzību:
importēt numpy kā np
importēt cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('ievadiet lietotāja ID') paraugsN = 0; kamēr 1: ret, img = cap.read () pelēks = cv2.cvt Krāsa (img, cv2. COLOR_BGR2GRAY) sejas = face_cascade.detectMultiScale (pelēka, 1.3, 5) (x, y, w, h) sejās: paraugsN = paraugsN+1; cv2.imwrite ("F:/Programmu faili/projekti/face_rec/sejasData/Lietotājs."+str (id)+"."+str (paraugsN)+".jpg", pelēks [y: y+h, x: x+w]) cv2. taisnstūris (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1), ja paraugs N> 20: break cap.release () cv2.destroyAllWindows ()
7. darbība: izveidojiet kodu, lai apmācītu atpazīšanas ierīci
Izveidojiet funkciju apmācības komplekta sagatavošanai
Tagad mēs definēsim funkciju
getImagesWithID (ceļš)
kas izmanto ievades argumentu absolūto ceļu uz attēlu datu bāzi un atgriež 2 saraksta kopu, no kuriem viens satur noteiktās sejas, bet otrs - atbilstošo iezīmi šai sejai. Piemēram, ja sejas saraksta i. Indekss apzīmē piekto indivīdu datu bāzē, tad atbilstošās i. Vietas etiķešu sarakstā vērtība ir 5.
Tagad konvertējiet datu kopas sejas (kas izveidotas 6. darbībā).yml failā, izmantojot zemāk norādīto kodu:
importēt OS
importēt numpy kā np importēt cv2 no PIL importa attēla # Sejas atpazīšanai mēs izmantosim LBPH sejas atpazīšanas atpazīšanas rīku = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/project/face_rec/sejasData" def getImagesWithID (ceļš): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (ceļš) sejas = ID = =] imagePath programmā imagePaths: # Izlasiet attēlu un pārvērtiet to pelēktoņu sejāsImg = Image.open (imagePath).convert ('L') faceNP = np.array (sejasImg, 'uint8') # Iegūstiet attēla ID etiķeti = int (os.path.split (imagePath) [-1].split (".") [1]) # Atklājiet seju attēla sejās. Pievienojiet (faceNP) ID.append (ID) cv2.imshow ("Seju pievienošana tranēšanai", faceNP) cv2.waitKey (10) atgriezt np.array (ID), sejas ID, sejas = getImagesWithID (ceļš) atpazīšanas līdzeklis.train (sejas, ID) atpazīšanas līdzeklis.save ("F:/Program Files/project/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
izmantojot šo kodu, visa sejas datu kopa ir pārvērsta vienā.yml failā ….. ceļa atrašanās vieta ir ("F:/Program Files/project/face_rec/faceREC/trainingdata.yml")
8. darbība: izveidojiet kodu, lai atpazītu sejas un rezultātu
Guyzz, šis ir pēdējais solis, kurā mēs varam izveidot kodu, lai atpazītu sejas ar jūsu tīmekļa kameras palīdzību. ŠAIS SOLIS IR DIVAS DARBĪBAS, KAS TIKS VEIKT … 1. video uzņemšana no kameras 2. salīdziniet to ar savu.yml failu
importēt numpy kā 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/project/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4), kamēr 1: ret, img = cap.read () pelēks = cv2.cvt Krāsa (img, cv2. COLOR_BGR2GRAY) sejas = face_cascade.detectMultiScale (pelēka, 1.5, 5) (x, y, w, h) sejās: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (pelēks [y: y+h, x: x+w]) if (id == 2): id = "alok", ja id == 1: id = "alok", ja id == 3: id = "anjali", ja id == 4: id = "Gaurav", ja id = = 5: id = 'rahul', ja id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), fonts, 255)) cv2.imshow ('img', img) ja cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
un visbeidzot rezultāts parādīsies jūsu acu priekšā …… u var lejupielādēt arī zip failu no saites zemāk: Noklikšķiniet šeit, lai lejupielādētu kodus Tātad, šajā pamācībā mēs veicām sejas noteikšanas+atpazīšanas uzdevumu, izmantojot OpenCV….. ja jūs patīk šis pamācošais….. plzzz abonējiet mani un balsojiet par mani….. paldies draugiem:)
Ieteicams:
Opencv sejas noteikšana, apmācība un atpazīšana: 3 soļi
Opencv sejas noteikšana, apmācība un atpazīšana: OpenCV ir atvērtā pirmkoda datora redzes bibliotēka, kas ir ļoti populāra, lai veiktu tādus pamata attēlu apstrādes uzdevumus kā aizmiglošana, attēlu sajaukšana, attēla uzlabošana, kā arī video kvalitāte, sliekšņa noteikšana utt. tas pierāda
Sejas atpazīšana un identifikācija - Arduino sejas ID, izmantojot OpenCV Python un Arduino .: 6 soļi
Sejas atpazīšana un identifikācija | Arduino sejas ID, izmantojot OpenCV Python un Arduino .: Sejas atpazīšana AKA sejas ID ir viena no svarīgākajām mūsdienu mobilo tālruņu funkcijām. Tātad, man radās jautājums " vai man var būt sejas ID savam Arduino projektam " un atbilde ir jā … Mans ceļojums sākās šādi: 1. solis: piekļuve mums
ESP32 CAM sejas atpazīšana ar MQTT atbalstu - AI domātājs: 4 soļi
ESP32 CAM sejas atpazīšana ar MQTT atbalstu | AI domātājs: Sveiki! Es gribēju dalīties ar sava projekta kodu, ja man būtu nepieciešama ESP CAM ar sejas atpazīšanu, kas varētu nosūtīt datus MQTT. Tik labi .. pēc varbūt 7 stundu ilgas skatīšanās, izmantojot vairākus koda piemērus, un meklējot, kas ir kas, man ir finišs
Opencv sejas atpazīšana: 4 soļi
Opencv sejas atpazīšana: sejas atpazīšana mūsdienās ir diezgan izplatīta lieta daudzās lietojumprogrammās, piemēram, viedtālruņos, daudzos elektroniskos sīkrīkos. Šāda veida tehnoloģija ietver daudzus algoritmus un rīkus utt., Kurā tiek izmantotas dažas iegultās iegultās SOC platformas, piemēram, Raspberry
Sejas atpazīšana reāllaikā: pilns projekts: 8 soļi (ar attēliem)
Reāllaika sejas atpazīšana: visaptverošs projekts: Pēdējā apmācībā, kurā pētīju OpenCV, mēs uzzinājām AUTOMĀTISKĀS VISIJAS OBJEKTA IZSEKOŠANU. Tagad mēs izmantosim savu PiCam, lai atpazītu sejas reāllaikā, kā redzams zemāk: Šis projekts tika veikts ar šo fantastisko " Atvērtā pirmkoda datora redzes bibliotēku & qu