Spaces:
Running
Running
| import os | |
| from tqdm import tqdm | |
| from src.landmark_detector import MediaPipeLandmarkDetector, DlibLandmarkDetector | |
| def get_images_and_landmarks(image_list, is_dlib): | |
| # Get the list of images in the directory | |
| image_paths = [] | |
| for file in image_list: | |
| if file.endswith(".jpg") or file.endswith(".png"): | |
| image_paths.append(file) | |
| else: | |
| print(f"Skipping file: {file}. Not a supported image format. (jpg or png)") | |
| if len(image_paths) < 2: | |
| raise ValueError("At least two images are required for morphing.") | |
| # exit() | |
| landmarks_list = [] # List of landmarks for each image | |
| images_list = [] # List of images | |
| # Initialize the landmark detector | |
| landmark_detector = DlibLandmarkDetector() if is_dlib else MediaPipeLandmarkDetector() | |
| print("Generating landmarks for the images...") | |
| # Detect landmarks for each image | |
| for image_path in tqdm(image_paths): | |
| try: | |
| landmarks, image = landmark_detector.get_landmarks(image_path) | |
| landmarks_list.append(landmarks) | |
| images_list.append(image) | |
| except Exception as e: | |
| print(f"{e} \nSkipping image: {image_path}\n") | |
| continue | |
| if len(landmarks_list) < 2: | |
| raise ValueError("At least two faces are required for morphing.") | |
| # exit() | |
| # if images dont have the same dimensions raise an error | |
| if len(set([image.shape for image in images_list])) > 1: | |
| raise ValueError("Images must have the same dimensions for morphing.") | |
| # exit() | |
| return images_list, landmarks_list |