Talaan ng mga Nilalaman:

Pagkilala sa Mukha + pagkilala: 8 Mga Hakbang (na may Mga Larawan)
Pagkilala sa Mukha + pagkilala: 8 Mga Hakbang (na may Mga Larawan)

Video: Pagkilala sa Mukha + pagkilala: 8 Mga Hakbang (na may Mga Larawan)

Video: Pagkilala sa Mukha + pagkilala: 8 Mga Hakbang (na may Mga Larawan)
Video: Ang Pera ng Pilipinas | Philippine Money | Teacher Pam 2024, Nobyembre
Anonim
Image
Image
Pagkilala sa Mukha + pagkilala
Pagkilala sa Mukha + pagkilala

Ito ay isang simpleng halimbawa ng pagpapatakbo ng pagtuklas ng mukha at pagkilala sa OpenCV mula sa isang camera. TANDAAN: GINAWA KO ANG PROYEKTO NA ITO PARA SA SENSOR CONTEST AT GINAMIT KO ANG CAMERA KUNG SENSOR SA PAGSUSUNOD AT MAKAKIKITA NG mga Mukha. Kaya, Ang aming Layunin Sa sesyon na ito, 1. I-install ang Anaconda 2. I-download ang Buksan ang CV Package 3. Itakda ang Mga Variable sa Kapaligiran 4. Subukan upang kumpirmahin ang 5 Gumawa ng code para sa pagtuklas ng mukha 6. Gumawa ng code upang lumikha ng set ng data 7. Gumawa ng code upang sanayin ang tagakilala 8. Gumawa ng code upang makilala ang mga mukha at Resulta.

Hakbang 1: I-install ang Anaconda

I-install ang Anaconda
I-install ang Anaconda

Ang Anaconda ay mahalagang isang mahusay na nakabalot na Python IDE na naipadala ng tone-toneladang mga kapaki-pakinabang na pakete, tulad ng NumPy, Pandas, IPython Notebook, atbp. Mukhang inirerekumenda ito saanman sa pam-agham na pamayanan. Suriin ang Anaconda upang mai-install ito.

Hakbang 2: I-download ang Buksan ang CV Package

I-download ang Buksan ang CV Package
I-download ang Buksan ang CV Package

Una, pumunta sa opisyal na site ng OpenCV upang i-download ang kumpletong pakete ng OpenCV. Pumili ng isang bersyon na gusto mo (2.x o 3.x). Nasa Python 2.x at OpenCV 2.x ako - higit sa lahat dahil ganito ang pag-set up / batay sa mga OpenCV-Python Tutorials.

Sa aking kaso, nakuha ko ang package (mahalagang isang folder) diretso sa aking F drive. (F: / opencv).

Hakbang 3: Itakda ang Mga variable ng Kapaligiran

Itakda ang Mga variable ng Kapaligiran
Itakda ang Mga variable ng Kapaligiran

Kopyahin at I-paste ang cv2.pyd file

Ang direktoryo ng Anaconda Site-packages (hal. F: / Program Files / Anaconda2 / Lib / site-packages sa aking kaso) ay naglalaman ng mga Python packages na maaari mong mai-import. Ang aming layunin ay kopyahin at i-paste ang cv2.pyd file sa direktoryo na ito (upang magamit namin ang pag-import ng cv2 sa aming mga Python code.).

Upang magawa ito, kopyahin ang cv2.pyd file…

Mula sa direktoryo ng OpenCV na ito (ang panimulang bahagi ay maaaring bahagyang naiiba sa iyong machine):

# Python 2.7 at 64-bit machine: F: / opencv / build / python / 2.7 / x64 # Python 2.7 at 32-bit machine: F: / opencv / build / python / 2.7 / x84

Sa direktoryo ng Anaconda na ito (ang panimulang bahagi ay maaaring bahagyang naiiba sa iyong machine):

F: / Program Files / Anaconda2 / Lib / site-packages

Matapos maisagawa ang hakbang na ito magagawa na namin ngayon ang paggamit ng pag-import ng cv2 sa Python code. NGUNIT, kailangan pa nating gumawa ng kaunti pang trabaho upang makuha ang FFMPEG (video codec) (upang paganahin kaming magawa ang mga bagay tulad ng pagproseso ng mga video.)

Mag-right click sa "My Computer" (o "This PC" sa Windows 8.1) -> left-click Properties -> left-click na "Advanced" na tab -> left-click na "Mga Variable ng Kapaligiran …" na pindutan. Magdagdag ng isang bagong Variable ng User upang ituro ang OpenCV (alinman sa x86 para sa 32-bit na sistema o x64 para sa 64-bit na system.) Kasalukuyan akong nasa isang 64-bit na makina.

32-bitOPENCV_DIRC: / opencv / build / x86 / vc12

64-bitOPENCV_DIRC: / opencv / build / x64 / vc12

Idagdag ang% OPENCV_DIR% / bin sa Variable ng User na PATH.

Halimbawa, ganito ang aking variable ng gumagamit ng PATH …

Dati:

F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts

Pagkatapos:

F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;% OPENCV_DIR% / bin

Ito na tayo tapos na! Handa nang magamit ang FFMPEG!

Hakbang 4: Pagsubok upang Kumpirmahin

Pagsubok upang Kumpirmahin
Pagsubok upang Kumpirmahin
Pagsubok upang Kumpirmahin
Pagsubok upang Kumpirmahin

Kailangan nating subukan kung magagawa na natin ang mga ito sa Anaconda (sa pamamagitan ng Spyder IDE):

  • I-import ang pakete ng OpenCV
  • Gamitin ang utility ng FFMPEG (upang mabasa / isulat / iproseso ang mga video)

Pagsubok 1: Maaari ba tayong mag-import ng OpenCV?

Upang kumpirmahin na ang Anaconda ay nakapag-import na ngayon ng OpenCV-Python package (namely, cv2), ilabas ang mga ito sa IPython Console:

import cv2

print cv2._ bersyon_

Kung ang pakete cv2 ay na-import ng ok na walang mga error, at ang bersyon ng cv2 ay nai-print, pagkatapos lahat tayo ay mabuti!

Pagsubok 2: Maaari ba nating magamit ang FFMPEG codec?

Maglagay ng isang sample

input_video.mp4

file ng video sa isang direktoryo. Nais naming subukan kung maaari naming:

  • basahin ang.mp4 video file na ito, at
  • sumulat ng isang bagong file ng video (maaaring.avi o.mp4 atbp.)

Upang magawa ito kailangan nating magkaroon ng isang test python code, tawagan itong test.py. Ilagay ito sa parehong direktoryo bilang sample

input_video.mp4

file

Ito ang ano

pagsubok.py

maaaring magmukhang (Tandaan: maraming salamat sa mga mungkahi nina Pete at Warren sa patlang ng puna - Pinalitan ko ang aking orihinal na test code sa kanya - mangyaring subukan ito mismo at ipaalam sa amin kung ito ay mas mahusay na gumagana):

import cv2

cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = matagumpay na nabasa ang video. Mali - nabigong basahin ang video. apat na = Mali - nabigong isulat ang video. cap.release () out.release ()

NAPAKA MAHALAGA ang pagsubok na ito. Kung nais mong iproseso ang mga file ng video, kakailanganin mong tiyakin na maaaring magamit ng Anaconda / Spyder IDE ang FFMPEG (video codec). Tumagal ako ng ilang araw upang maisagawa ito. Ngunit sana ay magugugol ka ng mas kaunting oras!:) Tandaan: isa pang pinakamahalagang tip kapag gumagamit ng Anaconda Spyder IDE. Tiyaking suriin mo ang Kasalukuyang Working Directory (CWD) !!!

Hakbang 5: Gumawa ng Code para sa Pagtuklas ng Mukha

Gumawa ng Code para sa Pagtuklas sa Mukha
Gumawa ng Code para sa Pagtuklas sa Mukha
Gumawa ng Code para sa Pagtuklas sa Mukha
Gumawa ng Code para sa Pagtuklas sa Mukha

Layunin

Sa sesyon na ito,

  • Makikita natin ang mga pangunahing kaalaman sa pagtuklas ng mukha gamit ang Haar Feature-based Cascade Classifiers
  • Kami ay magpapalawak ng pareho para sa pagtuklas ng mata atbp

Pagtuklas ng Haar-cascade sa OpenCV

Haharapin natin ang pagtuklas. Naglalaman na ang OpenCV ng maraming pre-sanay na mga uri para sa mukha, mata, ngiti atbp. Ang mga XML na file ay nakaimbak sa opencv / data / haarcascades / folder. Lumikha tayo ng detektor ng mukha at mata na may OpenCV. Una kailangan nating mai-load ang kinakailangang mga klasipikasyon ng XML. Pagkatapos i-load ang aming input na imahe (o video) sa grayscale mode O maaari kaming gumamit ng camera (para sa Real time face detection)

i-import ang numpy bilang np

import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / pinagmulan / data / haarcascades / haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / pinagmulan / data / haarcadeades / haarcadeades / haarcadeades.xml ') cap = cv2. VideoCapture (0) habang 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) mga mukha = face_cascade.detectMultiScale (grey, 1.5, 5) para sa (x, y, w, h) sa mga mukha: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = grey [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] eyes = eye_cascade.detectMultiScale (roi_gray) para sa (hal, ey, ew, eh) sa mga mata: cv2.rectangle (roi_color, (ex, ey), (dating + ew, ey + eh), (0, 255, 0), 2) naka-print na "natagpuan" + str (len (mukha)) + "mukha (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff kung k == 27: break cap.release () cv2.destroyAllWindows ()

Hakbang 6: Gumawa ng Code upang Lumikha ng Set ng Data

Gumawa ng Code upang Lumikha ng Set ng Data
Gumawa ng Code upang Lumikha ng Set ng Data
Gumawa ng Code upang Lumikha ng Set ng Data
Gumawa ng Code upang Lumikha ng Set ng Data

Gumagawa kami ng pagkilala sa mukha, kaya kakailanganin mo ng ilang mga imahe ng mukha! Maaari kang lumikha ng iyong sariling dataset o magsimula sa isa sa mga magagamit na mga database ng mukha, ang https://face-rec.org/databases/ ay nagbibigay sa iyo ng isang napapanahong pangkalahatang-ideya. Tatlong mga kagiliw-giliw na database ang (mga bahagi ng paglalarawan ay naka-quote mula sa

  • AT&T Facedatabase
  • Yale Facedatabase A
  • Pinalawak na Yale Facedatabase B

Dito ako gumagamit ng aking sariling dataset….sa tulong ng code na ibinibigay sa ibaba:

i-import ang numpy bilang np

import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / pinagmulan / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter user id') sampleN = 0; habang 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) mga mukha = face_cascade.detectMultiScale (grey, 1.3, 5) para sa (x, y, w, h) sa mga mukha: sampleN = sampleN + 1; cv2.imwrite ("F: / Program Files / projects / face_rec / mukhaData / Gumagamit." + str (id) + "." + str (sampleN) + ".jpg", kulay-abo [y: y + h, x: x + w]) cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) kung sampleN> 20: break cap.release () cv2.destroyAllWindows ()

Hakbang 7: Gumawa ng Code upang Sanayin ang Recognizer

Gumawa ng Code upang Sanayin ang Recognizer
Gumawa ng Code upang Sanayin ang Recognizer

Lumikha ng pagpapaandar upang maihanda ang hanay ng pagsasanay

Ngayon, tutukuyin namin ang isang pagpapaandar

getImagesWithID (landas)

dadalhin ang ganap na landas sa database ng imahe bilang input argument at ibabalik ang tuple ng 2 listahan, ang isa na naglalaman ng mga natukoy na mukha at ang iba pang naglalaman ng katumbas na label para sa mukha na iyon. Halimbawa, kung ang ith index sa listahan ng mga mukha ay kumakatawan sa ika-5 indibidwal sa database, kung gayon ang kaukulang ith lokasyon sa listahan ng mga label ay may halagang katumbas ng 5.

Ngayon i-convert ang mga mukha ng dataset (na nilikha sa hakbang 6) sa.yml file sa tulong ng code na ibinibigay sa ibaba:

import os

i-import ang numpy bilang np import cv2 mula sa PIL import Image # Para sa pagkilala sa mukha gagawin namin ang taga-kilalang LBPH Face Recognizer = cv2.createLBPHFaceRecognizer (); path = "F: / Program Files / projects / face_rec / mukhaData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) para sa f in os.listdir (path)] # print image_path #getImagesWithID (path) mukha = ID = para sa imagePath sa imagePaths: # Basahin ang imahe at i-convert sa mga grayscale na mukhaImg = Image.open (imagePath).convert ('L') faceNP = np.array (mukhaImg, 'uint8') # Kunin ang label ng image ID = int (os.path.split (imagePath) [- 1].split (".") [1]) # Detect the face in the image mukha.append (faceNP) IDs.append (ID) cv2.imshow ("Pagdaragdag ng mga mukha para sa traning", faceNP) cv2.waitKey (10) ibalik ang np.array (IDs), mga mukha ng Ids, mukha = getImagesWithID (landas) na kinikilala.train (mukha, Ids) kinikilala. ("F: / Program Files / projects / face_rec / faceREC / trainingdata.yml") cv2.destroyAllWindows ()

sa pamamagitan ng paggamit ng code na ito ang lahat ng dataset ng mukha ay na-convert sa isang solong.yml file…..path lokasyon ay ("F: / Program Files / projects / face_rec / faceREC / trainingdata.yml")

Hakbang 8: Gumawa ng Code upang Makilala ang Mga Mukha at Resulta

Guyzz ito ang panghuling hakbang kung saan makakalikha kami ng code upang makilala ang mga mukha sa tulong ng iyong webcamIN HAKBANG ITO MAY DALAWANG OPERASYON NA GUMAGAWA …. 1. pagkuha ng video mula sa cam 2. ihambing ito sa iyong.yml file

i-import ang numpy bilang npimport cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / pinagmulan / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecognizer (); 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) habang 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) mga mukha = face_cascade.detectMultiScale (grey, 1.5, 5) para sa (x, y, w, h) sa mga mukha: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) id, conf = rec.predict (grey [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' kung id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y + h), font, 255) cv2.imshow ('img', img) kung cv2.waitKey (1) == ord ('q'): break cap.release ()

cv2.destroyAllWindows ()

at sa wakas ang resulta ay makikita sa harap ng iyong mga mata …… maaari mo ring i-download ang zip file mula sa ibaba ng link: Mag-click dito upang i-download ang mga codeSo, sa itinuturo na ito ginanap namin ang gawain ng pagtuklas ng mukha + pagkilala gamit ang OpenCV…..kung ikaw tulad ng itinuturo na ito…. plzzz subscribe me and vote for me…..thanks friends:)

Inirerekumendang: