Talaan ng mga Nilalaman:

Pagtuklas ng Opencv sa Mukha, Pagsasanay at Pagkilala: 3 Mga Hakbang
Pagtuklas ng Opencv sa Mukha, Pagsasanay at Pagkilala: 3 Mga Hakbang

Video: Pagtuklas ng Opencv sa Mukha, Pagsasanay at Pagkilala: 3 Mga Hakbang

Video: Pagtuklas ng Opencv sa Mukha, Pagsasanay at Pagkilala: 3 Mga Hakbang
Video: Leap Motion SDK 2024, Disyembre
Anonim
Pagtuklas ng Opencv sa Mukha, Pagsasanay at Pagkilala
Pagtuklas ng Opencv sa Mukha, Pagsasanay at Pagkilala

Ang OpenCV ay isang bukas na mapagkukunan ng computer vision library na kung saan ay napakapopular para sa pagsasagawa ng mga pangunahing gawain sa pagproseso ng imahe tulad ng pag-blurr, paghalo ng imahe, pagpapahusay ng imahe pati na rin ang kalidad ng video, threshold atbp Bilang karagdagan sa pagproseso ng imahe, nagbibigay ito ng iba't ibang pre-sanay na malalim na pag-aaral mga modelo na maaaring direktang magamit upang malutas ang mga simpleng gawain sa kamay.

para sa pag-install ng opencv gamitin ang link na ito

www.instructables.com/id/Opencv-and-Python…

Hakbang 1: Pagtuklas ng Mukha sa isang Video ng Tunay na Oras

maaari kang maghanap sa google ng maraming mga programa sa pagtuklas ng mukha at ang mga natukoy na mukha ay dapat na nai-save sa isang folder para sa karagdagang mga bagay sa pagproseso ng imahe tulad ng pagsasanay at pag-label. mangolekta kami ng 30 mga sample

import cv2

i-import ang numpy bilang np

import os import sys

camera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #add ang iyong harcascade file path

name = raw_input ("Ano ang kanyang / kanyang Pangalan?")

#lahat ang mga file ay nai-save sa ilalim ng folder ng Mga User / prasad / Documents / imahe

dirName = "/ Users / prasad / Documents / images /" + pangalan

i-print (dirName) kung hindi os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") iba pa: i-print ("Mayroon nang pangalan") sys.exit ()

bilangin = 1

# kukolekta kami ng 30 mga sample

habang bilangin 30: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) mga mukha = faceCascade.detectMultiScale (grey, 1.5, 5) para sa (x, y, w, h) sa mga mukha: roiGray = kulay abong [y: y + h, x: x + w] fileName = dirName + "/" + pangalan + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("mukha", roiGray) cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 255, 0), 2) count + = 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

kung key == 27:

pahinga

# camera.release ()

cv2.destroyAllWindows ()

Hakbang 2: Pagsasanay sa Iyong Mga Imaheng Sample

Matapos makumpleto ang Pagtuklas sa Mukha pagkatapos ay maaari kaming pumunta para sa pagsasanay ng mga imahe

i-import ang osimport numpy bilang np mula sa PIL import Image import cv2 import pickle #import serial

#ser = serial. Serial ('/ dev / ttyACM0', 9600, timeout = 1)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

kinikilala = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ file_))

# sanayin ang mga imahe sa ilalim ng folder ng mga imahe

imageDir = os.path.join (baseDir, "mga imahe")

kasalukuyangId = 1

labelIds = {} yLabels = xTrain = # ser.write ("Training…..". encode ())

para sa mga root, dirs, file sa os.walk (imageDir):

print (root, dirs, files) para sa file sa mga file: print (file) kung file.endswith ("png") o file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) print (label)

kung hindi label sa labelIds:

labelIds [label] = kasalukuyangId print (labelIds) kasalukuyangId + = 1

id_ = labelIds [label]

pilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage, "uint8") mukha = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbours = 5)

para sa (x, y, w, h) sa mga mukha:

roi = imageArray [y: y + h, x: x + w] xTrain.append (roi) yLabels.append (id_)

na may bukas ("label", "wb") bilang f:

pickle.dump (labelIds, f) f.close ()

kinikilala.train (xTrain, np.array (yLabels))

pagkilala.save ("trainer.yml") print (labelIds)

Hakbang 3: Pagkilala sa Mga Mukha

pagkatapos ng pagsasanay ay tapos na ngayon maaari mong patakbuhin ang code sa ibaba upang masimulan itong makilala ang iyong mga bihasang mukha

import osos.en environment ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep

na may bukas ('mga label', 'rb') bilang f:

dicti = adobo.load (f) f.close ()

camera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

kinikilala = cv2.face. LBPHFaceRecognizer_create () recognitor.read ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

huling ="

#for frame in camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

habang Totoo: ret, frame = camera.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) mga mukha = faceCascade.detectMultiScale (grey, scaleFactor = 1.5, minNeighbours = 5) para sa (x, y, w, h) sa mga mukha: roiGray = kulay-abo [y: y + h, x: x + w]

id_, conf = recognizer.predict (roiGray)

para sa pangalan, halaga sa dicti.items ():

kung halaga == id_: i-print (pangalan) cv2.putTxt (frame, pangalan, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) kung pangalan! = huling: huling = pangalan kung conf <= 70: cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow ('frame', frame)

key = cv2.waitKey (1)

kung key == 27:

basagin ang cv2.destroyAllWindows ()

Inirerekumendang: