Python 将RGB图像像素值获取为16位并填充列表

Python 将RGB图像像素值获取为16位并填充列表,python,image,pixel,16-bit,Python,Image,Pixel,16 Bit,使用ImageMagick,我可以将任何图像转换为文本文件,每个像素(RGB)都有像素/值表示。这是通过“convert spektrum.png spektrum.txt”获得的16位整数png文件的示例输出 这表示图像中第一个左上像素(0,0)及其rgb(a)值的颜色 问题: 如何使用Python(3)将同一图像读入具有16位值的列表/数组?如果我用枕头来读这个PNG文件 from PIL import Image im = Image.open("spektrum.png") pix =

使用ImageMagick,我可以将任何图像转换为文本文件,每个像素(RGB)都有像素/值表示。这是通过“convert spektrum.png spektrum.txt”获得的16位整数png文件的示例输出

这表示图像中第一个左上像素(0,0)及其rgb(a)值的颜色

问题: 如何使用Python(3)将同一图像读入具有16位值的列表/数组?如果我用枕头来读这个PNG文件

from PIL import Image
im = Image.open("spektrum.png")
pix = im.load()
print(pix[2,5])
(67, 35, 99, 255)

我只能从中获取0-255个RGBA值。

我现在可以使用opencv读取16位值:

>>> import cv2
>>> img = cv2.imread('spektrum.png',-1) # -1 read format as is
>>> print(img.dtype)
uint16
>>> px = img[0,0]
>>> print(px)
[24114  7721 16192 65535]

可能有一个更简单的方法,但是试试这个
convert spektrum.png-compress none pnm:-
@MarkSetchell这个主意不错,但是它以一种我不理解的模式吐出rgb值,我看不到解析输出的方法。它应该是这里描述的“纯PPM(PNM)”:但输出不遵循它。看起来输出只是一个像素接一个像素的R-G-B值,但有些地方是我不理解的换行符。看起来枕头不支持16位。。“很抱歉,这是枕头的限制。我们没有能力读取每个通道超过8位的多通道图像。”我发现python/opencv可以读取16位,我会试试
>>> import cv2
>>> img = cv2.imread('spektrum.png',-1) # -1 read format as is
>>> print(img.dtype)
uint16
>>> px = img[0,0]
>>> print(px)
[24114  7721 16192 65535]