def extract_one_face(self, alignment, image): """ Extract one face from image """ logger.trace("Extracting one face: (frame: '%s', alignment: %s)", self.current_frame, alignment) face = DetectedFace() face.from_alignment(alignment, image=image) face.load_aligned(image, size=self.size, align_eyes=self.align_eyes) return face
def extract_one_face(self, alignment, image): """ Extract one face from image """ face = DetectedFace() face.from_alignment(alignment, image=image) face.load_aligned(image, size=self.size, padding=self.padding, align_eyes=self.align_eyes) return face
def transform_landmarks(self, alignments): """ For each face transform landmarks and return """ landmarks = dict() for _, faces, _, _ in alignments.yield_faces(): for face in faces: detected_face = DetectedFace() detected_face.from_alignment(face) detected_face.load_aligned(None, size=self.size, align_eyes=False) landmarks[detected_face.hash] = detected_face.aligned_landmarks return landmarks
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
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
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)
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