Spaces:
Runtime error
Runtime error
from .iimage import IImage | |
import math | |
import numpy as np | |
import warnings | |
# ========= STATIC FUNCTIONS ============= | |
def find_max_h(images): | |
return max([x.size[1] for x in images]) | |
def find_max_w(images): | |
return max([x.size[0] for x in images]) | |
def find_max_size(images): | |
return find_max_w(images), find_max_h(images) | |
def stack(images, axis = 0): | |
return IImage(np.concatenate([x.data for x in images], axis)) | |
def tstack(images): | |
w,h = find_max_size(images) | |
images = [x.pad2wh(w,h) for x in images] | |
return IImage(np.concatenate([x.data for x in images], 0)) | |
def hstack(images): | |
h = find_max_h(images) | |
images = [x.pad2wh(h = h) for x in images] | |
return IImage(np.concatenate([x.data for x in images], 2)) | |
def vstack(images): | |
w = find_max_w(images) | |
images = [x.pad2wh(w = w) for x in images] | |
return IImage(np.concatenate([x.data for x in images], 1)) | |
def grid(images, nrows = None, ncols = None): | |
combined = stack(images) | |
if nrows is not None: | |
ncols = math.ceil(combined.data.shape[0] / nrows) | |
elif ncols is not None: | |
nrows = math.ceil(combined.data.shape[0] / ncols) | |
else: | |
warnings.warn("No dimensions specified, creating a grid with 5 columns (default)") | |
ncols = 5 | |
nrows = math.ceil(combined.data.shape[0] / ncols) | |
pad = nrows * ncols - combined.data.shape[0] | |
data = np.pad(combined.data, ((0,pad),(0,0),(0,0),(0,0))) | |
rows = [np.concatenate(x,1,dtype=np.uint8) for x in np.array_split(data, nrows)] | |
return IImage(np.concatenate(rows, 0, dtype = np.uint8)[None]) |