Съдържание:

Opencv разпознаване на лица, обучение и разпознаване: 3 стъпки
Opencv разпознаване на лица, обучение и разпознаване: 3 стъпки

Видео: Opencv разпознаване на лица, обучение и разпознаване: 3 стъпки

Видео: Opencv разпознаване на лица, обучение и разпознаване: 3 стъпки
Видео: Face Recognition Using Python, Keras, OpenCV & Tensorflow| Recognize Face in Real-time Video Streams 2024, Юли
Anonim
Opencv разпознаване на лица, обучение и разпознаване
Opencv разпознаване на лица, обучение и разпознаване

OpenCV е библиотека за компютърно виждане с отворен код, която е много популярна за изпълнение на основни задачи за обработка на изображения, като замъгляване, смесване на изображения, подобряване на изображението, както и качество на видеото, прагове и т.н. В допълнение към обработката на изображения, тя предоставя различни предварително обучени задълбочени знания модели, които могат да се използват директно за решаване на прости задачи.

за инсталиране на opencv използвайте тази връзка

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

Стъпка 1: Откриване на лице във видео в реално време

можете да търсите в Google много програми за разпознаване на лица и откритите лица трябва да бъдат записани в папка за по -нататъшна обработка на изображения, като обучение и етикетиране. ще съберем 30 проби

импортиране на cv2

внос numpy като np

import os import sys

камера = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #добавете пътя си към файла harcascade

name = raw_input ("Как се казва той/тя?")

#всички файлове ще бъдат запазени в папката Users/prasad/Documents/images

dirName = "/Потребители/prasad/Документи/изображения/" + име

print (dirName) ако не os.path.exists (dirName): os.makedirs (dirName) print ("Директория създадена") else: print ("Име вече съществува") sys.exit ()

брой = 1

#ще съберем 30 проби

докато брой 30: прекъсване # рамка = рамка. масив сив = cv2.cvtColor (рамка, cv2. COLOR_BGR2GRAY) лица = faceCascade.detectMultiScale (сиво, 1.5, 5) за (x, y, w, h) в лица: roiGray = сиво [y: y + h, x: x + w] fileName = dirName + "/" + име + str (брой) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("лице", roiGray) cv2.rectangle (frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

ако ключ == 27:

прекъсване

#camera.release ()

cv2.destroyAllWindows ()

Стъпка 2: Обучете примерните си изображения

След като разпознаването на лица приключи, можем да отидем за обучение на изображенията

импортиране освенport numpy като np от PIL импортиране на изображение импортиране на cv2 импортиране на туршия #import serial

#ser = serial. Serial ('/dev/ttyACM0', 9600, таймаут = 1)

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

разпознавач = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ файл_))

#тренирайте изображенията в папката с изображения

imageDir = os.path.join (baseDir, "изображения")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Обучение …..". encode ())

за root, dirs, файлове в os.walk (imageDir):

print (root, dirs, files) за файл във файлове: print (file) if file.endswith ("png") или file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) печат (етикет)

ако не е етикет в labelIds:

labelIds [label] = currentId печат (labelIds) currentId += 1

id_ = labelIds [етикет]

pilImage = Image.

за (x, y, w, h) в лица:

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

с отворен ("етикети", "wb") като f:

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

разпознаващ влак (xTrain, np.array (yLabels))

Reconizer.save ("trainer.yml") печат (labelIds)

Стъпка 3: Разпознаване на лица

след като обучението приключи сега можете да стартирате кода по -долу, така че той да започне да разпознава вашите обучени лица

import osos.environ ['PYTHONINSPECT'] = 'on' импортиране на cv2 импортиране numpy като np импортиране на туршии #import RPi. GPIO като GPIO от времето импорт сън

с отворен ('етикети', 'rb') като f:

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

камера = cv2. VideoCapture (0)

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

разпознавач = cv2.face. LBPHFaceRecognizer_create () разпознаващ.прочит ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

последно ="

#за рамка в camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

докато True: ret, frame = camera.read () сиво = cv2.cvtColor (рамка, cv2. COLOR_BGR2GRAY) лица = faceCascade.detectMultiScale (сиво, scaleFactor = 1,5, minNeighbors = 5) за (x, y, w, h) в лица: roiGray = сиво [y: y+h, x: x+w]

id_, conf = разпознаващ.предсказване (roiGray)

за име, стойност в dicti.items ():

if value == id_: print (name) cv2.putText (frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) if name! = last: last = име, ако conf <= 70: cv2.rectangle (рамка, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('рамка', рамка)

ключ = cv2.waitKey (1)

ако ключ == 27:

break cv2.destroyAllWindows ()

Препоръчано: