Example #1
0
def modify_contrast(img, factor, optimize=False):
    if optimize:
        img_mod = ImageOps.autocontrast(numpy_to_pil(img))
    else:
        modifier = ImageEnhance.Contrast(numpy_to_pil(img))
        img_mod = modifier.enhance(factor)
    return pil_to_numpy(img_mod)
Example #2
0
def pixelate(img, **kwargs):
    img_mod = numpy_to_pil(img)
    img_size = img_mod.size

    # boost saturation of image
    sat_booster = ImageEnhance.Color(img_mod)
    img_mod = sat_booster.enhance(float(kwargs.get("saturation", 1.25)))

    # increase contrast of image
    contr_booster = ImageEnhance.Contrast(img_mod)
    img_mod = contr_booster.enhance(float(kwargs.get("contrast", 1.2)))

    # reduce the number of colors used in picture
    img_mod = img_mod.convert('P',
                              palette=Image.ADAPTIVE,
                              colors=int(kwargs.get("n_colors", 10)))

    # reduce image size
    superpixel_size = int(kwargs.get("superpixel_size", 10))
    reduced_size = (img_size[0] // superpixel_size,
                    img_size[1] // superpixel_size)
    img_mod = img_mod.resize(reduced_size, Image.BICUBIC)

    # resize to original shape to give pixelated look
    img_mod = img_mod.resize(img_size, Image.BICUBIC)
    img_mod = img_mod.convert('RGB')
    img_mod = pil_to_numpy(img_mod)

    return img_mod
Example #3
0
def draw_rectangle_from_blcorner_angle(img,
                                       xy,
                                       length,
                                       theta,
                                       color,
                                       degree_fmt=True,
                                       debug=False):
    img_mod = numpy_to_pil(img)
    if degree_fmt:
        theta = deg_to_rad(theta)
    opp_xy = (xy[0] + length * math.cos(theta),
              xy[1] + length * math.sin(theta))
    if debug:
        print('Opposite point coords : {}'.format(opp_xy))
    coords = [invert_iterable(xy), invert_iterable(opp_xy)]
    draw = ImageDraw.Draw(img_mod)
    draw.rectangle(coords, fill=tuple(color))
    return pil_to_numpy(img_mod)
Example #4
0
def load_rgb(imgfile, show_info=False):
    check_imgfile_arg(imgfile)
    img = pil_to_numpy(Image.open(imgfile))
    if img.ndim == 2:
        raise ValueError('Numpy array has two dimensions only.')
    elif img.ndim == 3:
        if show_info:
            display_info(imgfile, img=img)
        if img.shape[2] == 3:
            return img
        elif img.shape[2] == 4:
            # if RGBA, we check that the transparency mask does
            # not filter anything
            mask = 255 * np.ones_like(img[..., 0])
            if np.allclose(img[..., -1], mask):
                return img[..., :3]
            else:
                raise ValueError('Detected transparency layer.')
    else:
        raise ValueError('Numpy array has more than 3 dimensions.')
Example #5
0
def modify_vividness(img, factor):
    modifier = ImageEnhance.Color(numpy_to_pil(img))
    img_mod = modifier.enhance(factor)
    return pil_to_numpy(img_mod)
Example #6
0
def blur(img, radius=2.):
    f = ImageFilter.GaussianBlur(radius)
    img_mod = numpy_to_pil(img).filter(f)
    return pil_to_numpy(img_mod)
Example #7
0
def to_negative(img):
    img_mod = ImageOps.invert(numpy_to_pil(img))
    return pil_to_numpy(img_mod)
Example #8
0
def to_grayscale(img):
    img_mod = ImageOps.grayscale(numpy_to_pil(img))
    return pil_to_numpy(img_mod, from_grayscale=True)
Example #9
0
def modify_brightness(img, factor):
    modifier = ImageEnhance.Brightness(numpy_to_pil(img))
    img_mod = modifier.enhance(factor)
    return pil_to_numpy(img_mod)
Example #10
0
def draw_general_rectangle(img, coords, color):
    img_mod = numpy_to_pil(img)
    draw = ImageDraw.Draw(img_mod)
    draw.polygon(coords, fill=tuple(color))
    return pil_to_numpy(img_mod)