Этот пляж
может быть правильно импортирован, изменен в размере и отображен с этим кодом:
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](https://i.stack.imgur.com/os6Ku.png)
Почему отображаются цвета?
Если я использую оттенки серого изображение для начала, как это:
![graybeach](https://i.stack.imgur.com/eZ9ta.png)
Я получаю то же самое изображение 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>