File size: 1,907 Bytes
aa77e96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'''
cargo las imagenes que estan en el folder database_images
'''
import config as cfg
import os
from my_face_recognition import f_main
import cv2
import numpy as np
import traceback


def load_images_to_database():
    list_images = os.listdir(cfg.path_images)
    # filto los archivos que no son imagenes
    list_images = [File for File in list_images if File.endswith(('.jpg','.jpeg','JPEG'))]

    # inicalizo variables
    name = []
    Feats = []

    # ingesta de imagenes
    for file_name in list_images:
        im = cv2.imread(cfg.path_images+os.sep+file_name)

        # obtengo las caracteristicas del rostro
        box_face = f_main.rec_face.detect_face(im)
        feat = f_main.rec_face.get_features(im,box_face)
        if len(feat)!=1:
            '''
            esto significa que no hay rostros o hay mas de un rostro
            '''
            continue
        else:
            # inserto las nuevas caracteristicas en la base de datos
            new_name = file_name.split(".")[0]
            if new_name == "":
                continue
            name.append(new_name)
            if len(Feats)==0:
                Feats = np.frombuffer(feat[0], dtype=np.float64)
            else:
                Feats = np.vstack((Feats,np.frombuffer(feat[0], dtype=np.float64)))
    return name, Feats

def insert_new_user(rec_face,name,feat,im):
    try:
        rec_face.db_names.append(name)
        if len(rec_face.db_features)==0:
            rec_face.db_features = np.frombuffer(feat[0], dtype=np.float64)
        else:
            rec_face.db_features = np.vstack((rec_face.db_features,np.frombuffer(feat[0], dtype=np.float64)))
        # guardo la imagen
        cv2.imwrite(cfg.path_images+os.sep+name+".jpg", im) 
        return 'ok'
    except Exception as ex:
        error = ''.join(traceback.format_exception(etype=type(ex), value=ex, tb=ex.__traceback__))
        return error