# -*- coding: utf-8 -*-
"""
Created on Mon Feb  1 16:43:52 2021

@author: visha
"""


import cv2
import numpy as np
import pyttsx3


# engine command
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)


def speak(audio):
    engine.say(audio)
    engine.runAndWait()



face_classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

def face_extractor(img):
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    faces=face_classifier.detectMultiScale(gray,1.3,5)
    
    if faces is():
        return None
    
    for (x,y,w,h) in faces:
        cropped_face=img[y:y+h, x:x+w]
        
    return cropped_face

cap=cv2.VideoCapture(0)
count=0

while True:
    ret, frame=cap.read()
    if face_extractor(frame) is not None:
        count+=1
        face=cv2.resize(face_extractor(frame),(200,200))
        face=cv2.cvtColor(face,cv2.COLOR_BGR2GRAY)
        
        file_name_path='C:/Users/visha/Desktop/Surveillence/faces/user/'+str(count)+'.jpg'
        cv2.imwrite(file_name_path,face)
        
        cv2.putText(face,str(count),(50,50), cv2.FONT_HERSHEY_COMPLEX,1,(0,255,0),2)
        cv2.imshow('Face Cropper',face)
    
    else:
        print("Face not found")
        pass
    if cv2.waitKey(1)==13 or count==50:
        break
cap.release()
cv2.destroyAllWindows()
print("Collecting Samples Complete!!!!")
speak('Samples collected successfully')