File size: 1,837 Bytes
a4b5d57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

import os

#simple single version
def bbox_to_glandmarks(file_name,bbox,points = None):
     base,ext = os.path.splitext(file_name)
     glandmark = {"image":{
            "boxes":[{
                "left":int(bbox[0]),"top":int(bbox[1]),"width":int(bbox[2]),"height":int(bbox[3])
            }],
            "file":file_name,
            "id":int(base) 
            # width,height ignore here
            }}
     if points is not None:
          parts=[
          ]
          for point in points:
               parts.append({"x":int(point[0]),"y":int(point[1])})
          glandmark["image"]["boxes"][0]["parts"] = parts
     return glandmark

#technically this is not g-landmark/dlib ,
def convert_to_landmark_group_json(points):
     if len(points)!=68:
          print(f"points must be 68 but {len(points)}")
          return None
     new_points=list(points)
     
     result = [ # possible multi person ,just possible any func support multi person
         
          {    # index start 0 but index-number start 1
               "chin":new_points[0:17],
               "left_eyebrow":new_points[17:22],
               "right_eyebrow":new_points[22:27],
               "nose_bridge":new_points[27:31],
               "nose_tip":new_points[31:36],
               "left_eye":new_points[36:42],
               "right_eye":new_points[42:48],
               
               # lip points customized structure  
               # MIT licensed face_recognition
               # https://github.com/ageitgey/face_recognition
               "top_lip":new_points[48:55]+[new_points[64]]+[new_points[63]]+[new_points[62]]+[new_points[61]]+[new_points[60]],
               "bottom_lip":new_points[54:60]+[new_points[48]]+[new_points[60]]+[new_points[67]]+[new_points[66]]+[new_points[65]]+[new_points[64]],
          }
     ]
     return result