Если у вас есть ровно столько изображений, сколько необходимо для полного заполнения BigArr
, и ваши изображения могут быть сохранены в некотором списке, вы можете создать вложенный список с нужной сеткой и использовать np.block
чтобы сгенерировать такое изображение:
from matplotlib import pyplot as plt
import numpy as np
# Image sizes (width x height)
img_w, img_h = (40, 30)
f_img_w, f_img_h = (200, 300)
# Number of rows / columns in final image
r = np.int32(f_img_h / img_h)
c = np.int32(f_img_w / img_w)
# Generate some images (stored in N-dimensional array)
imgs = np.ones((img_h, img_w, r * c), np.uint8) * 5 * (np.arange(r * c) + 1)
# Assumed starting point of procedure: All images stored in list
imgs_list = [imgs[:, :, i] for i in np.arange(imgs.shape[2])]
# Generate nested list with desired grid
imgs_nested_list = [[imgs_list[y * c + x] for x in np.arange(c)] for y in np.arange(r)]
# Generate desired image
big_arr = np.block(imgs_nested_list)
plt.figure(1)
plt.imshow(big_arr, vmin=0, vmax=255)
plt.show()
Результат из примера будет выглядеть следующим образом:
Надеюсь, что это поможет !
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.1
Matplotlib: 3.2.0rc3
NumPy: 1.18.1
----------------------------------------