예제 #1
0
def test_defaults():
    path = 'mlxtend/image/tests/data/'
    eyepad = EyepadAlign()
    target_image = imageio.imread(
        os.path.join(path, 'celeba-subset/000001.jpg'))
    eyepad.fit_image(target_image)

    img = imageio.imread(os.path.join(path, 'lena-small.png'))
    img_tr = eyepad.transform(img)

    landmarks_tr = extract_face_landmarks(img_tr)

    true_vals = np.array(
        [[35, 113], [33, 126], [34, 140], [36, 154], [41, 166], [51, 176],
         [61, 184], [72, 189], [82, 190], [90, 186]],
        dtype=np.int32)

    if os.name == 'nt':
        # on windows, imageio parses jpgs sometimes differently so pixel values
        # maybe slightly different
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 2) == 0
    else:
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 0) == 0, \
                np.sum(np.abs(landmarks_tr[:10] - true_vals))
        np.testing.assert_array_equal(landmarks_tr[:10], true_vals)
예제 #2
0
def test_fit2dir():
    path = 'mlxtend/image/tests/data/'
    eyepad = EyepadAlign()
    eyepad.fit_directory(target_img_dir=os.path.join(path, 'celeba-subset/'),
                         target_width=178,
                         target_height=218,
                         file_extension='.jpg')

    img = imageio.imread(os.path.join(path, 'lena-small.png'))

    img_tr = eyepad.transform(img)

    landmarks_tr = extract_face_landmarks(img_tr)

    true_vals = np.array(
        [[30, 115], [28, 130], [29, 145], [31, 160], [38, 173], [48, 182],
         [59, 191], [71, 196], [82, 197], [90, 193]],
        dtype=np.int32)

    if os.name == 'nt':
        # on windows, imageio parses jpgs sometimes differently so pixel values
        # maybe slightly different
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 3) == 0
    else:
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 0) == 0, \
                np.sum(np.abs(landmarks_tr[:10] - true_vals) > 0)
        np.testing.assert_array_equal(landmarks_tr[:10], true_vals)
예제 #3
0
def test_fit2dir():
    path = 'mlxtend/image/tests/data/'
    eyepad = EyepadAlign()
    eyepad.fit_directory(target_img_dir=os.path.join(path, 'celeba-subset/'),
                         target_width=178,
                         target_height=218,
                         file_extension='.jpg')

    img = imageio.imread(os.path.join(path, 'lena-small.png'))

    img_tr = eyepad.transform(img)

    landmarks_tr = extract_face_landmarks(img_tr)

    true_vals = np.array([[30, 115],
                          [28, 130],
                          [29, 145],
                          [31, 160],
                          [38, 173],
                          [48, 182],
                          [59, 191],
                          [71, 196],
                          [82, 197],
                          [90, 193]], dtype=np.int32)

    if os.name == 'nt':
        # on windows, imageio parses jpgs sometimes differently so pixel values
        # maybe slightly different
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 3) == 0
    else:
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 0) == 0, \
                np.sum(np.abs(landmarks_tr[:10] - true_vals) > 0)
        np.testing.assert_array_equal(landmarks_tr[:10], true_vals)
예제 #4
0
def test_defaults():
    path = 'mlxtend/image/tests/data/'
    eyepad = EyepadAlign()
    target_image = imageio.imread(os.path.join(path,
                                               'celeba-subset/000001.jpg'))
    eyepad.fit_image(target_image)

    img = imageio.imread(os.path.join(path, 'lena-small.png'))
    img_tr = eyepad.transform(img)

    landmarks_tr = extract_face_landmarks(img_tr)

    true_vals = np.array([[35, 113],
                          [33, 126],
                          [34, 140],
                          [36, 154],
                          [41, 166],
                          [51, 176],
                          [61, 184],
                          [72, 189],
                          [82, 190],
                          [90, 186]], dtype=np.int32)

    if os.name == 'nt':
        # on windows, imageio parses jpgs sometimes differently so pixel values
        # maybe slightly different
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 2) == 0
    else:
        assert np.sum(np.abs(landmarks_tr[:10] - true_vals) > 0) == 0, \
                np.sum(np.abs(landmarks_tr[:10] - true_vals))
        np.testing.assert_array_equal(landmarks_tr[:10], true_vals)
예제 #5
0
def test_empty_dir():
    path = 'mlxtend/image/tests/data/'
    eyepad = EyepadAlign()

    def tmp_func():
        eyepad.fit_directory(target_img_dir=os.path.join(path,
                                                         'celeba-subset/'),
                             target_width=178,
                             target_height=218,
                             file_extension='.PNG')

    assert_raises(ValueError, tmp_func)
import imageio
from mlxtend.image import EyepadAlign


### Fit EyepadAlign on a single target image

eyepad = EyepadAlign()
target_image = imageio.imread('celeba-subset/000001.jpg')
print('Target image shape: ', target_image.shape)

eyepad.fit_image(target_image);
예제 #7
0
import imageio
import os
import numpy as np
from mlxtend.image import EyepadAlign
import pyprind

morph_orig_dir = 'morph2-unaligned'
morph_aligned_dir = 'morph2-aligned'

# Get average image
eyepad = EyepadAlign(verbose=1)
eyepad.fit_directory(target_img_dir=morph_orig_dir,
                     target_width=200,
                     target_height=240,
                     file_extension='.JPG')  # note the capital letters


# Center nose of the average image
nose_coord = eyepad.target_landmarks_[33].copy()
disp_vec = np.array([100, 120]) - nose_coord
translated_shape = eyepad.target_landmarks_ + disp_vec

eyepad_centnoise = EyepadAlign(verbose=1)
eyepad_centnoise.fit_values(target_landmarks=translated_shape,
                            target_width=200,
                            target_height=240)


# Align images to centered average image
flist = [f for f in os.listdir(morph_orig_dir) if f.endswith('.JPG')]
pbar = pyprind.ProgBar(len(flist), title='Aligning images ...')