def test_detect_face_landmarks(self): msg = "Incorrect number of face landmarks found." kwargs = {"save_landmarks":True, "verbose":True, "max_faces":10} images = facer.load_images(self.root, verbose=False) landmarks, faces = facer.detect_face_landmarks(images, **kwargs) expected = 6 * [[]] # List of length 3 (kludge) self.assertTrue(len(landmarks) == len(expected), msg)
from facer import facer import matplotlib.pyplot as plt # Load face images path_to_images = "./face_images" images = facer.load_images(path_to_images) # Detect landmarks for each face landmarks, faces = facer.detect_face_landmarks(images) # Use the detected landmarks to create an average face average_face = facer.create_average_face(faces, landmarks, save_image=True) # View the composite image plt.imshow(average_face)
def test_load_images(self): msg = "Incorrect number of images loaded." kwargs = {"verbose":True} images = facer.load_images(self.root, **kwargs) expected = 5 * [[]] # List of length 4 (kludge) self.assertTrue(len(images.keys()) == len(expected), msg)
# https://janakiev.com/til/python-background/ args = sys.argv if len(args) != 2: print() print("Wrong number of command-line arguments") print("Usage: $python detectAndAverageFaces.py path-to-image-dir") print() exit() t_start = time.time() path_to_images = sys.argv[1] print(f"PATH TO PROCESS:\n\t{path_to_images}") # Load the images images = facer.load_images(path_to_images, verbose=True) # n = 15 # images = {key:val for key, val in zip(list(images.keys())[:n], list(images.values())[:n])} # Detect landmarks for each face t0 = time.time() landmarks, faces = facer.detect_face_landmarks(images, verbose=True) elapsed = (time.time() - t0) / 60 print(f"Detecting landmarks took {elapsed:.2f} minutes.") # Average the faces together t0 = time.time() fn = f"average_face_{path_to_images.strip('/').rsplit('/', 1)[-1]}.jpg" facer.create_average_face(faces, landmarks, output_file=fn,