Example #1
0
 def align_face(self, faces, align_eyes, size, filename):
     """ Align the detected face and add the destination file path """
     final_faces = list()
     image = faces["image"]
     landmarks = faces["landmarks"]
     detected_faces = faces["detected_faces"]
     for idx, face in enumerate(detected_faces):
         detected_face = DetectedFace()
         detected_face.from_bounding_box(face, image)
         detected_face.landmarksXY = landmarks[idx]
         detected_face.load_aligned(image, size=size, align_eyes=align_eyes)
         final_faces.append({"file_location": self.output_dir / Path(filename).stem,
                             "face": detected_face})
     faces["detected_faces"] = final_faces
Example #2
0
    def detect_faces(self, filename, image):
        """ Extract the face from a frame (If alignments file not found) """
        inp = {"filename": filename, "image": image}
        self.extractor.input_queue.put(inp)
        faces = next(self.extractor.detected_faces())

        landmarks = faces["landmarks"]
        detected_faces = faces["detected_faces"]
        final_faces = list()

        for idx, face in enumerate(detected_faces):
            detected_face = DetectedFace()
            detected_face.from_bounding_box(face)
            detected_face.landmarksXY = landmarks[idx]
            final_faces.append(detected_face)
        return final_faces
Example #3
0
    def load_aligned_face(self):
        """ Align the faces for vgg_face input """
        for filename, face in self.filters.items():
            logger.debug("Loading aligned face: '%s'", filename)
            bounding_box = face["detected_faces"][0]
            image = face["image"]
            landmarks = face["landmarks"][0]

            detected_face = DetectedFace()
            detected_face.from_bounding_box(bounding_box, image)
            detected_face.landmarksXY = landmarks
            detected_face.load_aligned(image, size=224)
            face["face"] = detected_face.aligned_face
            del face["image"]
            logger.debug("Loaded aligned face: ('%s', shape: %s)", filename,
                         face["face"].shape)
Example #4
0
    def detect_faces(self, filename, image):
        """ Extract the face from a frame (If alignments file not found) """
        inp = {"filename": filename,
               "image": image}
        self.extractor.input_queue.put(inp)
        faces = next(self.extractor.detected_faces())

        landmarks = faces["landmarks"]
        detected_faces = faces["detected_faces"]
        final_faces = list()

        for idx, face in enumerate(detected_faces):
            detected_face = DetectedFace()
            detected_face.from_bounding_box(face)
            detected_face.landmarksXY = landmarks[idx]
            final_faces.append(detected_face)
        return final_faces