tf.keras.preprocessing.image.load_img не может импортировать изображения в градациях серого напрямую без ошибки отсечения - PullRequest
0 голосов
/ 16 марта 2020

Этот пляж This beach может быть правильно импортирован, изменен в размере и отображен с этим кодом:

from tensorflow.keras.preprocessing.image import load_img, img_to_array
img_rows, img_cols = 32, 32
imgTest = load_img('beach.png', color_mode='grayscale', target_size=(img_rows, img_cols))
imgTest = img_to_array(imgTest) #returns a 3d numpy array
print(imgTest.shape)
imgTest=imgTest.squeeze()
plt.imshow(imgTest)

Массив numpy имеет размеры (32,32,1), поэтому Мне нужно отбросить третье измерение, чтобы оно отображалось правильно, и поэтому я использую imgTest=imgTest.squeeze()

Но вывод получается красочным даже после того, как я преобразовал его в оттенки серого, и мой массив имеет только 32x32 значений яркости. Я бы подумал, что преобразование оттенков серого осталось бы серым.

enter image description here

Почему отображаются цвета?

Если я использую оттенки серого изображение для начала, как это:

graybeach

Я получаю то же самое изображение greeni sh 32x32. Массив, заданный load_img, имеет одиночные значения яркости, так откуда же берутся цвета?

Если я загружаю изображение в градациях серого БЕЗ преобразования в градациях серого, используя:

imgTest = load_img('beachGRAY.png', target_size=(img_rows, img_cols))

и, конечно, опускаем сжатие заявление, потому что мой массив имеет значения RGB, я получаю это предупреждение:

Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).

и пустой график. Почему мой сюжет пуст? Когда я смотрю на print(imgTest[0:2]) Там есть числа <255, так что что-то должно показать. Нет </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...