Example #1
0
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)
Example #3
0
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)
Example #4
0
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
Example #5
0
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)