from time import sleep
from io import BytesIO
import cv2
import numpy as np
import os

def addPerson(label, ImagesPath, 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')
