0

我正在尝试使用图像模块创建具有10 位/颜色(位深度)的图像。我编写了以下代码段,但结果为 8 位/颜色:

from PIL import Image

im = Image.new("RGBA", (256, 256))
pix = im.load()

for y in range(256):
    for x in range(256):
        pix[x, y] = (1023, 1023, 1023, 255)

im.show()
im.save("10bit.jpg")

虽然 image 成功写入了新文件,但它仍然编码为 8 位通道:

$ exiftool 10bit.png
Bit Depth                       : 8

$ file 10bit.png
10bit.png: PNG image data, 256 x 256, 8-bit/color RGBA, non-interlaced

我的目标是编写深色(40 位)图像:

深色由十亿或更多颜色组成。 [15] 230 是 1,073,741,824。通常这是红色、绿色和蓝色各 10 位 (10 bpc)。如果添加相同大小的 Alpha 通道,则每个像素占用 40 位。

我在这里缺少什么?还有其他方法可以创建 10 位 alpha 通道图像吗?(opencv等)

4

1 回答 1

2

你不能用PIL/Pillow. 此处描述了可用的模式,并且没有每像素超过 8 位的 RGB 模式。

我建议您使用NumpywithHxWx3通道np.uint16来创建图像并使用OpenCVwandscikit-image处理它们,如下所示:

import numpy as np

# Crete empire black image
image = np.zeros((H,W,3), np.uint16)

您没有明确说明要以哪种格式编写结果。如果您澄清这一点,也许我(或其他人)可以建议一个 Python 库。

于 2021-10-30T17:54:05.150 回答