对于我正在编写的程序,我需要将RGB图像转换为灰度,并使用PIL将其作为NumPy数组读取。
但是,当我运行以下代码时,它会将图像转换为灰度,但会转换为奇怪的颜色失真,有点像热像仪的输出,如图所示。
知道问题可能是什么?
谢谢!
http://www.loadthegame.com/wp-content/uploads/2014/09/thermal-camera.png
from PIL import Image
from numpy import *
from pylab import *
im = array(Image.open('happygoat.jpg').convert("L"))
inverted = Image.fromarray(im)
imshow(inverted)
show()
答案 0 :(得分:6)
matplotlib' s imshow
旨在科学地表示数据 - 而不仅仅是图像数据。默认情况下,它配置为使用高对比度调色板。
您可以通过传递以下选项强制它使用灰度显示数据:
import matplotlib.cm
imshow(inverted, cmap=matplotlib.cm.Greys_r)
答案 1 :(得分:-2)
添加此代码以查看/显示图像:
from PIL import Image;
from numpy import *
from pylab import *
im = array(Image.open('happygoat.jpg').convert("L"));
inverted = Image.fromarray(im);
inverted