Python PIL以8位切断了我的16位灰度图像

时间:2013-09-18 10:16:08

标签: python image tiff

我正在研究一个显示星星图像的python程序。图像是16位灰度tiff。 如果我尝试在外部程序中显示它们,例如ImageMagick它们是正确的,但如果我在python中加载它们然后使用'show()'或在Tkinter的画布中实现它们,除非有几个像素,否则它们都是白色的。 所以我估计python将255以上的每个像素设置为白色,但我不知道为什么。如果我加载图像然后再将其保存为tiff,ImageMagick可以显示正确的图像。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

尝试将图像转换为numpy数组并显示:

import Image
import matplotlib.pyplot as plt
import numpy as np

img = Image.open('image.tiff')
arr = np.asarray(img.getdata()).reshape(img.size[1], img.size[0])
plt.imshow(arr)
plt.show()

您也可以更改颜色映射:

from matplotlib import cm
plt.imshow(arr, cmap=cm.gray)