Я пытаюсь настроить существующий код в соответствии с моими потребностями. Первоначально код использовал imgs = np.ndarray((total, 1, image_rows, image_cols), dtype=np.uint8)
для хранения списка файлов изображений в формате массива numpy. Итерируя папку, каждый файл изображения читается следующим образом: img = skimage.io.imread(os.path.join(train_data_path, image_name))
Все работает отлично. код выглядит следующим образом:об изменении формы массива numpy в результате ввода изображения
image_rows = 420
image_cols = 580
imgs = np.ndarray((total, 1, image_rows, image_cols), dtype=np.uint8)
i=0
for image_name in images:
img = skimage.io.imread(os.path.join(train_data_path, image_name))
img = np.array([img])
imgs[i]=img
i+=1
Для того, чтобы удовлетворить собственные потребности, я, как правило, имеют множество файлов изображений с формой [total, image_rows,image_cols,1]
. Другими словами, я изменил его как imgs = np.ndarray((total,image_rows, image_cols,1), dtype=np.uint8)
Однако запуск кода вызывает следующую ошибку
imgs[i] = img
ValueError: could not broadcast input array from shape (1,420,580) into shape
(420,580,1)
Существуют ли какие-либо способ изменить форму img
, который первоначально имеет форму [1,420,580]
после чтения из файла. Как я могу изменить его на [420,580,1]
, не затрагивая соответствующие значения пикселей в изображении.
Спасибо, будет img.reshape работы. Я также попытался изменить форму. Похоже, код может компилироваться. Моя единственная забота об использовании reshape заключается в том, как я могу обеспечить, чтобы пиксели в [1,420,580] могли точно соответствовать пикселям [420,580,1]. – user288609