Проблемы формирования изображения: трехмерное изображение - PullRequest
0 голосов
/ 01 мая 2019

У меня есть изображение размером 7 x 5 по длине и ширине, но форма изображения, очевидно, (7,5,3).

Когда я изменяю размер изображения до 28 x 28, форма становится(28, 28, 3).Мне нужна форма be (1, 28, 28), но я понятия не имею, как это сделать.

image = cv2.imread(importedImage)
image = cv2.resize(image, (28, 28))
image = img_to_array(image)
image = np.array(image, dtype="float32")/ 255.0

print(image)


q = loaded_model.predict(np.array([image]))[0]

Изменение формы, похоже, не помогает.

Печатная версия изображения:

[[[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 ...

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]
  ...
  [1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]]

Ошибка: ValueError: Ошибка при проверке ввода: ожидается, что flatten_1_input будет иметь 3 измерения, но получит массив с формой (1, 28, 28, 3)

1 Ответ

0 голосов
/ 02 мая 2019

Это дополнительное измерение (3) связано с тем, что OpenCV (и большинство других пакетов, работающих с изображениями) поддерживают отдельные цветовые каналы для красного, зеленого и синего. (OpenCV заказывает их синий, зеленый, красный.) Некоторые изображения имеют альфа-канал, и в этом случае вы увидите (высота, ширина, 4).

Вы можете добраться до (высота, ширина, 1), объединив три цветовых канала в один канал в оттенках серого.

image = cv2.imread(importedImage)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
resized = cv2.resize(gray, (28, 28))

должно приблизить вас к тому, что вам нужно.

...