Ejemplo n.º 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_dlib_rect(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
Ejemplo n.º 2
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
Ejemplo n.º 3
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
Ejemplo n.º 4
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_dict(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)
Ejemplo n.º 5
0
 def align_face(faces, align_eyes, size, padding=48):
     """ Align the detected face """
     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_dlib_rect(face, image)
         detected_face.landmarksXY = landmarks[idx]
         detected_face.frame_dims = image.shape[:2]
         detected_face.load_aligned(image,
                                    size=size,
                                    padding=padding,
                                    align_eyes=align_eyes)
         final_faces.append(detected_face)
     faces["detected_faces"] = final_faces
Ejemplo n.º 6
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