def swap(self,head_name,face_path):
'''
??? ????
head_name?
?????????
face_path:
?????????
'''
im_head,landmarks_head,im_face,landmarks_face=self.resize(*self.heads[head_name],*self.read_and_mark(face_path))
M = self.transformation_from_points(landmarks_head[self.ALIGN_POINTS],
landmarks_face[self.ALIGN_POINTS])
face_mask = self.get_face_mask(im_face, landmarks_face)
warped_mask = self.warp_im(face_mask, M, im_head.shape)
combined_mask = np.max([self.get_face_mask(im_head, landmarks_head), warped_mask],
axis=0)
warped_face = self.warp_im(im_face, M, im_head.shape)
warped_corrected_im2 = self.correct_colours(im_head, warped_face, landmarks_head)
out=im_head * (1.0 - combined_mask) + warped_corrected_im2 * combined_mask
return out
评论列表
文章目录