gpt4 book ai didi

Python 和 16 位 PGM

转载 作者:太空狗 更新时间:2023-10-30 01:03:34 24 4
gpt4 key购买 nike

我尝试用 Python 读取 16 位 PGM 图像。好像(?)PIL 不支持这种格式?

import Image
im = Image.open('test.pgm')
im.show()

大致显示图像,但不正确。到处都是暗带,据报道 img 有 mode=L。我认为这与我早期关于 16-bit TIFF files 的问题有关. 16 位是否很少见以至于 PIL 不支持它?关于如何使用 PIL 或其他标准库或自制代码在 Python 中读取 16 位 PGM 文件的任何建议?

最佳答案

你需要一个模式"L;16";然而,当加载 PGM 时,PIL 似乎有一种 "L" 模式硬编码到 File.c 中。你必须 write your own decoder如果您希望能够读取 16 位 PGM。

然而,16 位图像支持似乎仍然不稳定:

>>> im = Image.fromstring('I;16', (16, 16), '\xCA\xFE' * 256, 'raw', 'I;16') 
>>> im.getcolors()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 866, in getcolors
return self.im.getcolors(maxcolors)
ValueError: image has wrong mode

我认为 PIL 能够读取 16 位图像,但实际存储和操作它们仍处于实验阶段。

>>> im = Image.fromstring('L', (16, 16), '\xCA\xFE' * 256, 'raw', 'L;16') 
>>> im
<Image.Image image mode=L size=16x16 at 0x27B4440>
>>> im.getcolors()
[(256, 254)]

看,它只是将 0xCAFE 值解释为 0xFE,这并不完全正确。

关于Python 和 16 位 PGM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com