# -*- coding: utf-8 -*-
"""
Autor: MICHAL KOUPIL
"""
#TÍMTO ALGORITMEM BYLA TESTOVÁNA METODA LBPH PRO PŘÍPAD, KDY JIŽ NA VSTUPNÍ SADĚ OBRAZŮ
#BYLY DETEKOVÁNY OBLIČEJE

import sys 
sys.path.append('/Users/michal.koupil/AppData/Local/Programs/Python/Python37/Lib/site-packages')

import os
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import math
import time
start_time = time.time()

#načtení trénovací sady obrazů
cropped_images=[]
images=[]
for i in os.listdir('trenovaci_sada_10'): 
        images.append(cv.imread('trenovaci_sada_10/{0}'.format(i),0))

images_orig = np.array(images,dtype=object)      
images = [x for x in images if x is not None]
  
#vytvoření označení trénovací sady
a=[]
a=list(range(0,len(images)))
a=np.array(a)
    
#trénování modelu a uložení histogramů
trained_model = cv.face.LBPHFaceRecognizer_create()
trained_model.train(images,a)   
trained_model.write('LBPH_classifier.yml')

recognizer = cv.face.LBPHFaceRecognizer_create()
recognizer.read('LBPH_classifier.yml')

#načtení testovací sady
images_test=[]
match_counter = 0
image=[]
pos = [0]

for i in os.listdir('testovaci_sada_10/'): 
	images_test.append(cv.imread('testovaci_sada_10/{0}'.format(i),0))
 

for i in range(len(images_test)):
    testing_pic = images_test[i]
    idx, confidence = recognizer.predict(testing_pic)
    image = np.array(images[idx],dtype=object)
    for j in range(len(images_orig)):
        if (np.array_equal(image, images_orig[j])) == True:
            pos.append(j)
    fig, axes = plt.subplots(1,2,figsize=(10,6))
    axes[0].imshow(testing_pic, cmap="gray")
    axes[0].set_title("testing picture - person " + str(a[i+1]))
    axes[1].imshow(images[idx], cmap="gray")
    axes[1].set_title("BEST MATCH")
    
len_im_test = str(len(images_test))
print("--- %s seconds ---" % (time.time() - start_time))
