def Normal():
    Op = None
    BD = None
    PO = None
    CL = None
    UM = None
    CO = None

    Entrenamiento = []
    Prediccion = []
    while (True):
        Opciones = [BD, PO, CL, UM, CO]
        Op = Menu.Normal(Opciones)
        if (Op == '1'):
            BD = Menu.Base_Datos()
        elif (Op == '2'):
            PO = Menu.Porcentaje()
        elif (Op == '3'):
            CL = Menu.Clasifcador()
        elif (Op == '4'):
            UM = Menu.Umbral()
            Reconocimiento.Configurar_Umbrales(UM)
        elif (Op == '5'):
            CO = Menu.Componentes()
            Reconocimiento.Configurar_Componentes(CO)
        elif (Op == '6'):
            print('\n\t Preparando Directorios...')
            Entrenamiento, Prediccion = Preparar_Directorios(BD, PO, CL)
            print('\n\t Entrenado al Sistema...')
            Reconocimiento.Entrenamiento(Entrenamiento[0], Entrenamiento[1])

            real, pred = Predecir_Imagenes(Prediccion[0], Prediccion[1],
                                           'EigenFace')
            f = Etiquetas(real)
            cnf_matrix = confusion_matrix(real, pred)
            plt.figure()
            Matrix.plot_confusion_matrix(cnf_matrix,
                                         classes=f,
                                         title='EigenFace')

            real, pred = Predecir_Imagenes(Prediccion[0], Prediccion[1],
                                           'FisherFace')
            f = Etiquetas(real)
            cnf_matrix = confusion_matrix(real, pred)
            plt.figure()
            Matrix.plot_confusion_matrix(cnf_matrix,
                                         classes=f,
                                         title='FisherFace')

            real, pred = Predecir_Imagenes(Prediccion[0], Prediccion[1],
                                           'LBPH')
            cnf_matrix = confusion_matrix(real, pred)
            plt.figure()
            Matrix.plot_confusion_matrix(cnf_matrix, classes=f, title='LBPH')
            plt.show()

        elif (Op == 'E'):
            break
def Ruido():
    Op = None
    BD = None
    BDD = None
    PO = None
    CL = None
    UM = None
    CO = None

    Entrenamiento = []
    Prediccion = []
    while (True):
        Opciones = [BD, BDD, PO, CL, UM, CO]
        Op = Menu.Ruido(Opciones)
        if (Op == '1'):
            BD = Menu.Base_Datos()
        elif (Op == '2'):
            BDD = Menu.Base_Datos()
        elif (Op == '3'):
            PO = Menu.Porcentaje()
        elif (Op == '4'):
            CL = Menu.Clasifcador()
        elif (Op == '5'):
            UM = Menu.Umbral()
            Reconocimiento.Configurar_Umbrales(UM)
        elif (Op == '6'):
            CO = Menu.Componentes()
            Reconocimiento.Configurar_Componentes(CO)
        elif (Op == '7'):
            print('\n\t Preparando Directorios...')
            Entrenamiento, Prediccion = Preparar_Directorios(BD, PO, CL)
            DESCONOCIDOS = Preparar_Ruido(BDD, CL)
            print('\n\t Entrenado al Sistema...')
            Reconocimiento.Entrenamiento(Entrenamiento[0], Entrenamiento[1])
            PE = Predecir_Imageness(DESCONOCIDOS, 'EigenFace')
            PF = Predecir_Imageness(DESCONOCIDOS, 'FisherFace')
            PL = Predecir_Imageness(DESCONOCIDOS, 'LBPH')
            print(
                "Imagenes: %s, Desconocidos(Funciona Bien): %s %%, Equivocados: %s %%"
                % (len(DESCONOCIDOS), PE[0], PE[1]))
            print(
                "Imagenes: %s, Desconocidos(Funciona Bien): %s %%, Equivocados: %s %%"
                % (len(DESCONOCIDOS), PF[0], PF[1]))
            print(
                "Imagenes: %s, Desconocidos(Funciona Bien): %s %%, Equivocados: %s %%"
                % (len(DESCONOCIDOS), PL[0], PL[1]))

        elif (Op == 'E'):
            break