Satura rādītājs:

Opencv sejas noteikšana, apmācība un atpazīšana: 3 soļi
Opencv sejas noteikšana, apmācība un atpazīšana: 3 soļi

Video: Opencv sejas noteikšana, apmācība un atpazīšana: 3 soļi

Video: Opencv sejas noteikšana, apmācība un atpazīšana: 3 soļi
Video: Что такое камера искусственного интеллекта? Что делает ее такой мощной? 2024, Novembris
Anonim
Opencv sejas noteikšana, apmācība un atpazīšana
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. Papildus attēlu apstrādei tā nodrošina dažādas iepriekš apmācītas dziļas mācīšanās modeļus, kurus var tieši izmantot vienkāršu uzdevumu risināšanai.

opencv instalēšanai izmantojiet šo saiti

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

1. darbība: sejas noteikšana reāllaika video

jūs varat meklēt google daudzas sejas noteikšanas programmas, un atklātās sejas ir jāsaglabā mapē turpmākai attēlu apstrādei, piemēram, apmācībai un marķēšanai. mēs savāksim 30 paraugus

importēt cv2

importēt numpy kā np

importēt os importa sistēmu

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #pievienojiet harcascade faila ceļu

name = raw_input ("Kāds ir viņa vārds?")

#visi faili tiks saglabāti mapē Lietotāji/prasad/Dokumenti/attēli

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

drukāt (dirName), ja nav os.path.exists (dirName): os.makedirs (dirName) print ("Direktorijs izveidots") cits: print ("Vārds jau pastāv") sys.exit ()

skaits = 1

#mēs savāksim 30 paraugus

kamēr skaits 30: break # frame = frame.array pelēks = cv2.cvtColor (kadrs, cv2. COLOR_BGR2GRAY) sejas = faceCascade.detectMultiScale (pelēks, 1,5, 5) (x, y, w, h) sejās: roiGray = pelēks [y: y + h, x: x + w] fileName = dirName + "/" + nosaukums + str (skaits) + ".jpg" cv2.imwrite (faila nosaukums, roiGray) cv2.imshow ("seja", roiGray) cv2. taisnstūris (rāmis, (x, y), (x+w, y+h), (0, 255, 0), 2) skaits+= 1 cv2.imshow ('rāmis', rāmis) taustiņš = cv2.gaidīšanas atslēga (1)

ja atslēga == 27:

pārtraukums

#camera.release ()

cv2.destroyAllWindows ()

2. darbība. Paraugu attēlu apmācība

Kad sejas noteikšana ir pabeigta, mēs varam doties apmācīt attēlus

importēt osimport numpy kā np no PIL importēšanas Attēls importēt cv2 importēt marinējumu #import sērijas

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

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

atpazīšanas ierīce = cv2.face. LBPHFaceRecognizer_create ()

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

#apmāciet attēlus zem attēlu mapes

imageDir = os.path.join (baseDir, "attēli")

strāvas ID = 1

labelIds = {} yLabels = xTrain = #ser.write ("Apmācība…..". kodēt ())

saknei, dirs, failiem os.walk (imageDir):

drukāt (root, dirs, faili) failā esošajam failam: drukāt (fails), ja file.endswith ("png") vai file.endswith ("jpg"): ceļš = os.path.join (sakne, fails) label = os.path.basename (root) print (etiķete)

ja nav etiķetes etiķetēIds:

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

id_ = labelIds [iezīme]

pilImage = Image.open (ceļš).convert ("L") imageArray = np.array (pilImage, "uint8") sejas = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbours = 5)

(x, y, w, h) sejās:

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

ar atvērtu ("etiķetes", "wb") kā f:

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

atpazinējs.train (xTrain, np.array (yLabels))

atpazinējs.save ("trainer.yml") drukāt (labelIds)

3. darbība. Seju atpazīšana

pēc apmācības beigām varat palaist zemāk redzamo kodu, lai tas sāktu atpazīt jūsu apmācītās sejas

importēt osos.environ ['PYTHONINSPECT'] = 'importēt cv2 importēt numpy kā np importēt marinējumu #import RPi. GPIO kā GPIO no laika importēšanas miega

ar atvērtu ("etiķetes", "rb") kā f:

dicti = marinēts gurķis. ielādēt (f) f. aizvērt ()

kamera = cv2. VideoCapture (0)

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

atpazītājs = cv2.face. LBPHFaceRecognizer_create () atpazīšanas līdzeklis.lasījums ("trainer.yml")

fonts = cv2. FONT_HERSHEY_SIMPLEX

pēdējais ="

#kadram kamerā.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

kamēr True: ret, frame = camera.read () pelēks = cv2.cvtColor (kadrs, cv2. COLOR_BGR2GRAY) sejas = faceCascade.detectMultiScale (pelēks, scaleFactor = 1,5, minNeighbours = 5) (x, y, w, h) sejās: roiGray = pelēks [y: y+h, x: x+w]

id_, conf = atpazinējs.predict (roiGray)

vārdam, vērtībai dicti.items ():

if value == id_: print (name) cv2.putText (kadrs, nosaukums, (x, y), fonts, 2, (0, 0, 255), 2, cv2. LINE_AA) ja nosaukums! = last: last = nosaukums, ja conf <= 70: cv2. taisnstūris (rāmis, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('rāmis', kadrs)

atslēga = cv2.waitKey (1)

ja atslēga == 27:

break cv2.destroyAllWindows ()

Ieteicams: