size
parent
bb3502d9bd
commit
48c83151a4
|
@ -41,9 +41,12 @@ show_mouth_mask_box = False
|
||||||
mask_feather_ratio = 8
|
mask_feather_ratio = 8
|
||||||
mask_down_size = 0.50
|
mask_down_size = 0.50
|
||||||
mask_size = 1
|
mask_size = 1
|
||||||
|
mouth_mask_size = 1.0
|
||||||
eyes_mask = False
|
eyes_mask = False
|
||||||
show_eyes_mask_box = False
|
show_eyes_mask_box = False
|
||||||
eyebrows_mask = False
|
eyebrows_mask = False
|
||||||
show_eyebrows_mask_box = False
|
show_eyebrows_mask_box = False
|
||||||
|
eyes_mask_size = 1.0
|
||||||
|
eyebrows_mask_size = 1.0
|
||||||
use_fake_face = False
|
use_fake_face = False
|
||||||
fake_face_path = None
|
fake_face_path = None
|
||||||
|
|
|
@ -128,10 +128,10 @@ def create_lower_mouth_mask(
|
||||||
# Calculate the center of the landmarks
|
# Calculate the center of the landmarks
|
||||||
center = np.mean(lower_lip_landmarks, axis=0)
|
center = np.mean(lower_lip_landmarks, axis=0)
|
||||||
|
|
||||||
# Expand the landmarks outward
|
# Expand the landmarks outward using the mouth_mask_size
|
||||||
expansion_factor = (
|
expansion_factor = (
|
||||||
1 + modules.globals.mask_down_size
|
1 + modules.globals.mask_down_size * modules.globals.mouth_mask_size
|
||||||
) # Adjust this for more or less expansion
|
) # Adjust expansion based on slider
|
||||||
expanded_landmarks = (lower_lip_landmarks - center) * expansion_factor + center
|
expanded_landmarks = (lower_lip_landmarks - center) * expansion_factor + center
|
||||||
|
|
||||||
# Extend the top lip part
|
# Extend the top lip part
|
||||||
|
@ -145,8 +145,8 @@ def create_lower_mouth_mask(
|
||||||
5,
|
5,
|
||||||
] # Indices for landmarks 2, 65, 66, 62, 70, 69, 18
|
] # Indices for landmarks 2, 65, 66, 62, 70, 69, 18
|
||||||
toplip_extension = (
|
toplip_extension = (
|
||||||
modules.globals.mask_size * 0.5
|
modules.globals.mask_size * modules.globals.mouth_mask_size * 0.5
|
||||||
) # Adjust this factor to control the extension
|
) # Adjust extension based on slider
|
||||||
for idx in toplip_indices:
|
for idx in toplip_indices:
|
||||||
direction = expanded_landmarks[idx] - center
|
direction = expanded_landmarks[idx] - center
|
||||||
direction = direction / np.linalg.norm(direction)
|
direction = direction / np.linalg.norm(direction)
|
||||||
|
@ -219,12 +219,12 @@ def create_eyes_mask(face: Face, frame: Frame) -> (np.ndarray, np.ndarray, tuple
|
||||||
left_eye_center = np.mean(left_eye, axis=0).astype(np.int32)
|
left_eye_center = np.mean(left_eye, axis=0).astype(np.int32)
|
||||||
right_eye_center = np.mean(right_eye, axis=0).astype(np.int32)
|
right_eye_center = np.mean(right_eye, axis=0).astype(np.int32)
|
||||||
|
|
||||||
# Calculate eye dimensions
|
# Calculate eye dimensions with size adjustment
|
||||||
def get_eye_dimensions(eye_points):
|
def get_eye_dimensions(eye_points):
|
||||||
x_coords = eye_points[:, 0]
|
x_coords = eye_points[:, 0]
|
||||||
y_coords = eye_points[:, 1]
|
y_coords = eye_points[:, 1]
|
||||||
width = int((np.max(x_coords) - np.min(x_coords)) * (1 + modules.globals.mask_down_size))
|
width = int((np.max(x_coords) - np.min(x_coords)) * (1 + modules.globals.mask_down_size * modules.globals.eyes_mask_size))
|
||||||
height = int((np.max(y_coords) - np.min(y_coords)) * (1 + modules.globals.mask_down_size))
|
height = int((np.max(y_coords) - np.min(y_coords)) * (1 + modules.globals.mask_down_size * modules.globals.eyes_mask_size))
|
||||||
return width, height
|
return width, height
|
||||||
|
|
||||||
left_width, left_height = get_eye_dimensions(left_eye)
|
left_width, left_height = get_eye_dimensions(left_eye)
|
||||||
|
@ -357,12 +357,13 @@ def create_eyebrows_mask(face: Face, frame: Frame) -> (np.ndarray, np.ndarray, t
|
||||||
left_center = np.mean(left_eyebrow, axis=0)
|
left_center = np.mean(left_eyebrow, axis=0)
|
||||||
right_center = np.mean(right_eyebrow, axis=0)
|
right_center = np.mean(right_eyebrow, axis=0)
|
||||||
|
|
||||||
# Calculate bounding box with padding
|
# Calculate bounding box with padding adjusted by size
|
||||||
all_points = np.vstack([left_eyebrow, right_eyebrow])
|
all_points = np.vstack([left_eyebrow, right_eyebrow])
|
||||||
min_x = np.min(all_points[:, 0]) - 25
|
padding_factor = modules.globals.eyebrows_mask_size
|
||||||
max_x = np.max(all_points[:, 0]) + 25
|
min_x = np.min(all_points[:, 0]) - 25 * padding_factor
|
||||||
min_y = np.min(all_points[:, 1]) - 20
|
max_x = np.max(all_points[:, 0]) + 25 * padding_factor
|
||||||
max_y = np.max(all_points[:, 1]) + 15
|
min_y = np.min(all_points[:, 1]) - 20 * padding_factor
|
||||||
|
max_y = np.max(all_points[:, 1]) + 15 * padding_factor
|
||||||
|
|
||||||
# Ensure coordinates are within frame bounds
|
# Ensure coordinates are within frame bounds
|
||||||
min_x = max(0, int(min_x))
|
min_x = max(0, int(min_x))
|
||||||
|
|
|
@ -290,6 +290,17 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
|
||||||
)
|
)
|
||||||
mouth_mask_switch.place(relx=0.6, rely=0.50)
|
mouth_mask_switch.place(relx=0.6, rely=0.50)
|
||||||
|
|
||||||
|
# Add mouth mask size slider
|
||||||
|
mouth_mask_size_slider = ctk.CTkSlider(
|
||||||
|
root,
|
||||||
|
from_=0.5,
|
||||||
|
to=2.0,
|
||||||
|
number_of_steps=30,
|
||||||
|
command=lambda value: setattr(modules.globals, "mouth_mask_size", value)
|
||||||
|
)
|
||||||
|
mouth_mask_size_slider.set(modules.globals.mouth_mask_size)
|
||||||
|
mouth_mask_size_slider.place(relx=0.8, rely=0.50, relwidth=0.1)
|
||||||
|
|
||||||
eyes_mask_var = ctk.BooleanVar(value=modules.globals.eyes_mask)
|
eyes_mask_var = ctk.BooleanVar(value=modules.globals.eyes_mask)
|
||||||
eyes_mask_switch = ctk.CTkSwitch(
|
eyes_mask_switch = ctk.CTkSwitch(
|
||||||
root,
|
root,
|
||||||
|
@ -300,6 +311,17 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
|
||||||
)
|
)
|
||||||
eyes_mask_switch.place(relx=0.6, rely=0.55)
|
eyes_mask_switch.place(relx=0.6, rely=0.55)
|
||||||
|
|
||||||
|
# Add eyes mask size slider
|
||||||
|
eyes_mask_size_slider = ctk.CTkSlider(
|
||||||
|
root,
|
||||||
|
from_=0.5,
|
||||||
|
to=2.0,
|
||||||
|
number_of_steps=30,
|
||||||
|
command=lambda value: setattr(modules.globals, "eyes_mask_size", value)
|
||||||
|
)
|
||||||
|
eyes_mask_size_slider.set(modules.globals.eyes_mask_size)
|
||||||
|
eyes_mask_size_slider.place(relx=0.8, rely=0.55, relwidth=0.1)
|
||||||
|
|
||||||
eyebrows_mask_var = ctk.BooleanVar(value=modules.globals.eyebrows_mask)
|
eyebrows_mask_var = ctk.BooleanVar(value=modules.globals.eyebrows_mask)
|
||||||
eyebrows_mask_switch = ctk.CTkSwitch(
|
eyebrows_mask_switch = ctk.CTkSwitch(
|
||||||
root,
|
root,
|
||||||
|
@ -310,6 +332,17 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
|
||||||
)
|
)
|
||||||
eyebrows_mask_switch.place(relx=0.6, rely=0.60)
|
eyebrows_mask_switch.place(relx=0.6, rely=0.60)
|
||||||
|
|
||||||
|
# Add eyebrows mask size slider
|
||||||
|
eyebrows_mask_size_slider = ctk.CTkSlider(
|
||||||
|
root,
|
||||||
|
from_=0.5,
|
||||||
|
to=2.0,
|
||||||
|
number_of_steps=30,
|
||||||
|
command=lambda value: setattr(modules.globals, "eyebrows_mask_size", value)
|
||||||
|
)
|
||||||
|
eyebrows_mask_size_slider.set(modules.globals.eyebrows_mask_size)
|
||||||
|
eyebrows_mask_size_slider.place(relx=0.8, rely=0.60, relwidth=0.1)
|
||||||
|
|
||||||
# Box Visualization Switches (Middle Right - Bottom Section)
|
# Box Visualization Switches (Middle Right - Bottom Section)
|
||||||
show_mouth_mask_box_var = ctk.BooleanVar(value=modules.globals.show_mouth_mask_box)
|
show_mouth_mask_box_var = ctk.BooleanVar(value=modules.globals.show_mouth_mask_box)
|
||||||
show_mouth_mask_box_switch = ctk.CTkSwitch(
|
show_mouth_mask_box_switch = ctk.CTkSwitch(
|
||||||
|
|
Loading…
Reference in New Issue