|
|
|
import os |
|
|
|
|
|
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) |
|
|
|
}} |
|
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 |
|
|
|
|
|
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 = [ |
|
|
|
{ |
|
"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], |
|
|
|
|
|
|
|
|
|
"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 |