如何使用Keras加载图像并显示图像?

19
%matplotlib inline
from keras.preprocessing import image

import matplotlib.pyplot as plt
import numpy as np
img = np.random.rand(224,224,3)
plt.imshow(img)
plt.show()

img_path = "image.jpeg"
img = image.load_img(img_path, target_size=(224, 224))
print(type(img))

x = image.img_to_array(img)
print(type(x))
print(x.shape)
plt.imshow(x)
我有这样一段代码,本应该显示图片。但是它在错误的通道中显示图像。我错过了什么吗?
Translated text:

我有这样一段代码,本应该显示图片。但是它在错误的通道中显示图像。我错过了什么吗?


“但是它显示的图像通道错误”不是一个充分的问题描述。结果是什么,您希望它如何呈现?特别是在这里target_size的作用是什么,您是否想忽略颜色通道? - ImportanceOfBeingErnest
2个回答

18

这是一个图像缩放问题。imshow()函数期望输入范围在0-1之间,而你传递的是[0-255]的范围输入。尝试将其视为:

plt.imshow(x/255.)

2
我想指出这仅适用于RGB图像。plt.imshow默认情况下自动缩放到给定数据的范围,并且可以通过vminvmax参数进行控制。 - Imanol Luengo

3
这个问题有点老了,但是有一种非常舒适的方式来显示图片:
tf.keras.preprocessing.image.array_to_img(image[0]).show()

您的图像必须具有3个维度(如果它是批处理的,则只需取desired_element即可)。在EagerTensors或numpy数组上可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接