Matplotlib imshow在使用astype(浮点)后反转颜色
我正在使用matplotlibMatplotlib imshow在使用astype(浮点)后反转颜色,matplotlib,Matplotlib,我正在使用matplotlibimshow来可视化来自cifar-10的数据。在读取cifar10数据后,我注意到从imshow渲染的图像在使用.astype(float)后有所不同 比如说, 没有.astype(float) 下面是我看到的.astype(float) 为什么图像看起来像是使用反转的颜色进行渲染 以下是我正在使用的代码: dir = 'resources/datasets/cifar-10-batches-py' import cPickle fo = open(dir +
imshow
来可视化来自cifar-10的数据。在读取cifar10数据后,我注意到从imshow
渲染的图像在使用.astype(float)
后有所不同
比如说,
没有.astype(float)
下面是我看到的.astype(float)
为什么图像看起来像是使用反转的颜色进行渲染
以下是我正在使用的代码:
dir = 'resources/datasets/cifar-10-batches-py'
import cPickle
fo = open(dir + '/data_batch_1', 'rb')
dict = cPickle.load(fo)
fo.close()
X=dict['data'].reshape((10000, 3, 32, 32)).transpose(0, 2, 3, 1).astype(float)
Y=dict['labels']
plt.imshow(X[2,])
plt.show()
有点晚,但对于寻求帮助并找到此帖子的人: 本文很好地解释了matplotlib如何决定颜色映射 我刚刚遇到了同样的问题,并在这篇文章中找到了解决办法。matplotlib似乎假设float类型的3d图像在[0,1]范围内,并使用1的模运算来钳制值,如2.7->0.7 试试这个:
X=dict['data'].reshape((10000, 3, 32, 32)).transpose(0, 2, 3,1)
X = X.astype(float) / 255
plt.imshow(X[2,])
现在matplotlib应该直接使用提供的值,而不是使用内部模魔术