File size: 1,615 Bytes
520fb27
12aa86f
 
520fb27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12aa86f
520fb27
12aa86f
520fb27
 
12aa86f
 
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
from PIL import Image
import numpy as np
def render(Session,input_name,output_name,FacesEmbedding,results,FaceImage,persons):
    res = results.face_landmarks[0]
    x_=int(res[145].x*FaceImage.shape[1])
    y_=int(res[145].y*FaceImage.shape[0])
    x2_=int(res[374].x*FaceImage.shape[1])
    y2_=int(res[374].y*FaceImage.shape[0])
    w=np.sqrt((x_-x2_)**2+(y_-y2_)**2)
    W=6.3
    f = 840
    d = (W * f) / w
    x=int(res[356].x*FaceImage.shape[1])
    y=int(res[152].y*FaceImage.shape[0])
    x2=int(res[162].x*FaceImage.shape[1])
    y2=int(res[338].y*FaceImage.shape[0])
    if x<FaceImage.shape[1]-10:
        x+=10
    if y>FaceImage.shape[0]-10:
        y+=10
    if x2>10:
        x2-=10
    if y2>10:
        y2-=10
    
    
    modelimg=FaceImage[np.abs(y2):np.abs(y),np.abs(x2):np.abs(x)]
    
    
    if modelimg.size<9:
        return x_,y_,x2_,y2,"Image Size is Zero ",d
    modelimg=np.array(Image.fromarray(modelimg.astype("uint8")).resize((224,224)))
    
    modelimg=modelimg/255
    
    distances=[]
    
    for index,name in enumerate(persons):
        output=np.squeeze(Session.run([output_name],{f"{input_name}":np.expand_dims(modelimg,axis=0).astype(np.float16)})[0])
        personimpeding=FacesEmbedding[name].values
        distance=np.sum(np.power(output-personimpeding,2))
        distances.append(distance)
    name=persons[np.argmin(distances)]
    distance=distances[np.argmin(distances)]
    if distance <0.3:
        
        return x_,y_,x2_,y2,name,d
        
    else:
        return x_,y_,x2_,y2,"UnKnow",d