Beispiel #1
0
def main():
    arguments = parser.parse_args()
    train_path = "train_recortadas"
    test_path = "test_reconocimiento"
    classifier = "LDA-BAYES"
    imgPath = None
    if (arguments.train):
        train_path = arguments.train
    if (arguments.classifier):
        print('Detectado parametro classifier: ' + arguments.classifier)
        classifier = arguments.classifier
    if (arguments.test):
        test_path = arguments.test
    if (arguments.img_path):
        imgPath = arguments.img_path
    print("The script has " + str(3) + ' arguments:')
    print("Train path: " + str(train_path) + '.')
    print("Test path: " + str(test_path) + '.')
    print("Clasificador: " + str(classifier))
    #imagenes = os.listdir(test_path)

    try:
        trainClassesPath = []
        for f in os.listdir(train_path):
            trainClassesPath.append(train_path + "/" + f)
        cl = Classifier(classifier)
        classifier_result, test_img_names, test_labels, test_accuracy, train_accuracy = cl.start(
            trainClassesPath, test_path)

        # Si hay una imagen real para analizar
        if (imgPath is not None):
            print(
                "Detectada imagen adicional para analizar. \nComenzando deteccion de señales..."
            )
            # Obtenemos las señales de la imagen y las guardamos en una carpeta para procesarlas
            imgs = getSignalsFromImg(imgPath)
            folder = './temporary_test'
            if not os.path.exists(folder):
                os.makedirs(folder)
            else:
                shutil.rmtree(folder)  # removes all the subdirectories!
                os.makedirs(folder)
            for i, img in enumerate(imgs):
                im = plt.image.imsave(folder + "/image" + str(i) + ".png",
                                      cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
            # Una vez guardadas las señales reconocidas de la imagen procedemos a clasificarlas --> ToDo

        # Graficos
        graphics = Graphics()
        graphics.accuracy_graphic(train_accuracy,
                                  "Entrenamiento " + classifier)
        graphics.accuracy_graphic(test_accuracy, "Test " + classifier)
        graphics.conf_matrix(classifier_result, test_labels)
        graphics.get_f1_score(classifier_result, test_labels)

        # Escribir resultados
        writeInFile("resultado.txt", test_img_names, classifier_result)

    except Exception as e:
        print(
            'Algo ha ido mal, por favor comprueba que tienes la version 3.6.x de Python y la version 3.x de OpenCV'
        )
        print(str(e))
    print('Reconocimiento finalizado. Resultados escritos en resultados.txt')