我正在关注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()
根据网站的预期输出是:
但这就是我所得到的:
正如您所看到的那样,颜色存在问题。第一次用图像编程,所以我不知道这里发生了什么。
答案 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'粉红色'来获取不同颜色的图片。