FaceRecognition-python/Trainer.py
2018-11-22 06:14:31 +00:00

51 lines
1.4 KiB
Python

from time import sleep
from io import BytesIO
import cv2
import numpy as np
import os
import takePhotos;
picCount = 0
def start():
print('Starting training..')
label = int(input('Label (Integer): '))
picCount = int(input('Number of Photos: '))
clearTrainFolder()
def clearTrainFolder():
print('clearing train folder')
filelist = [ f for f in os.listdir('train/') if f.endswith(".jpg") ]
for f in filelist:
os.remove(os.path.join('train/', f))
def addPerson(label, newFileName, oldFileName):
try:
#faceFilePath = '/faces/hesham-saeed2'
faceFile = 'faces/'+ oldFileName
face_recognizer = cv2.createLBPHFaceRecognizer()
face_recognizer.load(faceFile)
except:
print('[ Error ] Problem in init/loading LBPHfacerecognizer')
images = []
labels = []
image_names = os.listdir(ImagesPath)
for image_name in image_names:
if image_name.startswith('.'):
continue;
image_path = ImagesPath + image_name
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
images.append(gray[y:y+h, x:x+w])
labels.append(label)
print('Added '+ image_name)
face_recognizer.update(images, np.array(labels))
face_recognizer.save('faces/'+newFileName)
addPerson(3,'train/','test1','Hesham-Saeed2')