У меня есть следующий код, который читает изображение с помощью opencv и отображает его:
import cv2, matplotlib.pyplot as plt
img = cv2.imread('imgs_soccer/soccer_10.jpg',cv2.IMREAD_COLOR)
img = cv2.resize(img, (128, 128))
plt.imshow(img)
plt.show()
Я хочу сгенерировать несколько случайных изображений с помощью кера, поэтому я определю этот генератор:
image_gen = ImageDataGenerator(rotation_range=15,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.01,
zoom_range=[0.9, 1.25],
horizontal_flip=True,
vertical_flip=False,
fill_mode='reflect',
data_format='channels_last',
brightness_range=[0.5, 1.5])
но, когда я использую это таким образом:
image_gen.flow(img)
Я получаю эту ошибку:
'Input data in `NumpyArrayIterator` should have rank 4. You passed an array with shape', (128, 128, 3))
И мне кажется очевидным: RGB, изображение, конечно, это 3 измерения!
Что мне здесь не хватает?
В документации сказано, что ему нужен 4-мерный массив, но не указывается что я должен поместить в 4-е измерение !
И как сделать этот 4-х мерный массив ? У меня есть, пока (ширина, высота, канал), это 4-е измерение идет в начале или в конце ?
Я также не очень знаком с numpy: как я могу изменить существующий массив img для добавления 4-го измерения?