Есть ли более идиоматический способ отображения сетки изображений, как в приведенном ниже примере?Идентичный способ отображения изображений в сетке с numpy
import numpy as np
def gallery(array, ncols=3):
nrows = np.math.ceil(len(array)/float(ncols))
cell_w = array.shape[2]
cell_h = array.shape[1]
channels = array.shape[3]
result = np.zeros((cell_h*nrows, cell_w*ncols, channels), dtype=array.dtype)
for i in range(0, nrows):
for j in range(0, ncols):
result[i*cell_h:(i+1)*cell_h, j*cell_w:(j+1)*cell_w, :] = array[i*ncols+j]
return result
Я попытался с помощью hstack
и reshape
и т.д., но не мог получить правильное поведение.
Я заинтересован в использовании numpy для этого, потому что существует ограничение на количество изображений, которые вы можете построить с помощью matplotlib, на номера subplot
и imshow
.
Если вам нужны примеры данных для тестирования вы можете использовать веб-камеру, как так:
import cv2
import matplotlib.pyplot as plt
_, img = cv2.VideoCapture(0).read()
plt.imshow(gallery(np.array([img]*6)))
Какая форма 'array'? – Divakar
Его 4 измерения (индекс, строки, столбцы, интенсивность). Где интенсивность = 3. –
Я не могу запустить его. Не могли бы вы разместить образец/проверить его в конце? – Divakar