def test_local(): from functools import partial import scipy.ndimage import scipy.misc from facemorpher import locator from facemorpher import aligner # Load source image face_points_func = partial(locator.face_points, '../data') base_path = '../females/Screenshot 2015-03-04 17.11.12.png' src_path = '../females/BlDmB5QCYAAY8iw.jpg' src_img = scipy.ndimage.imread(src_path)[:, :, :3] # Define control points for warps src_points = face_points_func(src_path) base_img = scipy.ndimage.imread(base_path)[:, :, :3] base_points = face_points_func(base_path) size = (600, 500) src_img, src_points = aligner.resize_align(src_img, src_points, size) base_img, base_points = aligner.resize_align(base_img, base_points, size) result_points = locator.weighted_average_points(src_points, base_points, 0.2) # Perform transform dst_img1 = warp_image(src_img, src_points, result_points, size) dst_img2 = warp_image(base_img, base_points, result_points, size) from facemorpher import blender ave = blender.weighted_average(dst_img1, dst_img2, 0.6) mask = blender.mask_from_points(size, result_points) blended_img = blender.poisson_blend(dst_img1, dst_img2, mask)
def load_image_points(path, size): img = cv2.imread(path) points = locator.face_points(img) if len(points) == 0: print('No face in %s' % path) return None, None else: return aligner.resize_align(img, points, size)
def load_image_points(path, size): img = scipy.ndimage.imread(path)[..., :3] points = locator.face_points(path) if len(points) == 0: print('No face in %s' % path) return None, None else: return aligner.resize_align(img, points, size)
def load_image_points(path, size): if os.path.isfile(path): img = cv2.imread(path) points = locator.face_points(img) if len(points) == 0: print('No face in %s' % path) return None, None else: return aligner.resize_align(img, points, size) else: print("load_image_points cannot find image [{}]".format(path)) return None, None
def load_image_points(path, size): img = cv2.imread(path) points = locator.face_points(img) if len(points) == 0: print('No face in %s' % path) return None, None else: center_fore_head = points[14] center_tip_of_chin = points[6] angle = calc_angle(center_fore_head, center_tip_of_chin) img = rotate(img, -angle, ((center_fore_head[0] + center_tip_of_chin[0]) // 2, (center_fore_head[1] + center_tip_of_chin[1]) // 2)) points = locator.face_points(img) return aligner.resize_align(img, points, size)