SciPy图像显示看起来像“热凸轮”

时间:2015-01-27 14:41:44

标签: python scipy pillow

我正在关注this tutorial here我复制粘贴第一个代码示例的地方:

from scipy import misc
l = misc.lena()
misc.imsave('lena.png', l)

import matplotlib.pyplot as plt
plt.imshow(l)
plt.show()

根据网站的预期输出是:

image

但这就是我所得到的:

enter image description here

正如您所看到的那样,颜色存在问题。第一次用图像编程,所以我不知道这里发生了什么。

3 个答案:

答案 0 :(得分:2)

您的问题是默认情况下matplotlib使用的色彩图不太适合显示灰度图像。 使用gray colormap:

可以轻松解决这个问题
plt.gray() # Switch to grayscale
plt.imshow(l)
plt.show()

要注意的是,默认情况下,图像是内插的。这意味着如果你放大,你将看不到你期望的块状像素,但是模糊"图片。 您可以使用interpolation=选项停止此操作:

plt.imshow(image, interpolation='none')

答案 1 :(得分:0)

您需要更改用于显示图像的颜色贴图。 如果你改变了

plt.imshow(l)

plt.gray()
plt.imshow(l)

它应该显示正确的结果。请注意,在这种情况下,色彩映射在全局级别设置为灰度级。如果您只想更改单个调用的色彩映射表,请将正确的色彩映射表分配给" cmap" " imshow(l)"的属性呼叫。

答案 2 :(得分:0)

Matplotlib有很多包含的色彩图。因此,当您使用imshow绘图时,您可以选择如何灰色阴影(或阵列上的强度值)变为渐变颜色。

默认的色彩映射是' jet'但您可以使用gray色彩映射,例如:

import matplotlib.pyplot as plt
from matplotlib import cm

plt.imshow(l, cmap=cm.gray)
plt.show()

或者使用' heat',或者' bone'粉红色'来获取不同颜色的图片。