使用PIL显示一个numpy数组

4
我希望能够使用PIL显示一个大小为(512, 512)uint16值的numpy二维数组。如果我编写了以下函数:
def display_PIL(nparray):
    image = Image.fromarray(nparray)
    image.show()

我收到一个错误信息:

无法处理此数据类型。

但如果我添加:

def display_PIL(nparray):
    image = Image.fromarray(nparray,'L')
    image.show()

它显示了图像,但我只有图像的右上角四分之一。是否有解决办法可以获得完整的图像?在哪里可以找到关于“L”选项和其他选项的信息?

2
这个话题有点偏离主题,但如果你想绘制数组中的值,为什么不使用matplotlib呢?它被设计用于允许多种绘图类型,并直接支持numpy数组。 - abought
'L' 类型严格为 8 位,因此您应该使用 'I;16'。请参见 http://www.pythonware.com/library/pil/handbook/concepts.htm。 - user197030
Matplotlib是一个非常强大的工具,适用于小数据集的显示。在我的情况下,我有一个超过(100,000,100,000)个值的2D数组,其中Matplotlib并不是非常强大。理想情况下,我希望有一个依赖于屏幕分辨率的工具(对要在屏幕上显示的每个像素显示区域进行平均),其中缩放会重新计算显示区域以进行显示。但是这样的工具似乎不存在。 - user1187727
1个回答

2
问题可以通过在Image.fromarray函数中使用选项'I;16'来解决。非常感谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接