Source code for draugr.numpy_utilities.resize
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "Christian Heider Nielsen"
__doc__ = r"""
Created on 17/07/2020
"""
from typing import Tuple
import PIL.Image
import numpy
from draugr.visualisation.pillow_utilities import np_array_to_pil_img
__all__ = ["resize_array"]
from warg import passes_kws_to
[docs]@passes_kws_to(PIL.Image.Image.resize)
def resize_array(x: numpy.ndarray, size: Tuple[int, int], **kwargs) -> numpy.ndarray:
"""description"""
assert x.ndim in [3, 4], "Only 3D and 4D Tensors allowed!"
if isinstance(size, int):
size = (size, size)
if x.ndim == 4: # 4D Tensor
res = []
for i in range(x.shape[0]):
img = np_array_to_pil_img(x[i])
img = img.resize(size, **kwargs)
img = numpy.asarray(img, dtype="float32")
img = numpy.expand_dims(img, axis=0)
img /= 255.0
res.append(img)
res = numpy.concatenate(res)
# res = numpy.expand_dims(res, axis=1) # TODO Wrong?
else: # 3D Tensor
img = np_array_to_pil_img(x)
img = img.resize(size, **kwargs)
res = numpy.asarray(img, dtype="float32")
res = numpy.expand_dims(res, axis=0)
res /= 255.0
return res
if __name__ == "__main__":
print(resize_array(numpy.zeros((12, 10, 10, 3)), 5).shape)