Swap / face_analyser.py
songdaooi's picture
Duplicate from bluefoxcreation/SwapMukham
49dd0e9
detect_conditions = [
"left most",
"right most",
"top most",
"bottom most",
"most width",
"most height",
]
def analyse_face(image, model, return_single_face=True, detect_condition="left most"):
faces = model.get(image)
if not return_single_face:
return faces
total_faces = len(faces)
if total_faces == 1:
return faces[0]
print(f"{total_faces} face detected. Using {detect_condition} face.")
if detect_condition == "left most":
return sorted(faces, key=lambda face: face["bbox"][0])[0]
elif detect_condition == "right most":
return sorted(faces, key=lambda face: face["bbox"][0])[-1]
elif detect_condition == "top most":
return sorted(faces, key=lambda face: face["bbox"][1])[0]
elif detect_condition == "bottom most":
return sorted(faces, key=lambda face: face["bbox"][1])[-1]
elif detect_condition == "most width":
return sorted(faces, key=lambda face: face["bbox"][2])[-1]
elif detect_condition == "most height":
return sorted(faces, key=lambda face: face["bbox"][3])[-1]