【发布时间】:2021-12-15 03:52:53
【问题描述】:
我正在尝试使用 Image 模块创建具有 10 位/颜色(位深)的图像。 我写了以下sn-p,但结果是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")
虽然图像成功写入新文件,但它仍然编码为 8 位通道:
$ exiftool 10bit.png
Bit Depth : 8
$ file 10bit.png
10bit.png: PNG image data, 256 x 256, 8-bit/color RGBA, non-interlaced
我的目标是写Deep color (40-bit)图片:
深色由十亿或更多颜色组成。[15] 230 是 1,073,741,824。通常这是红色、绿色和蓝色各 10 位 (10 bpc)。如果添加相同大小的 Alpha 通道,则每个像素占用 40 位。
我在这里缺少什么?还有其他方法可以创建 10 位 alpha 通道图像吗? (opencv 等)
【问题讨论】:
-
JPEG 仅支持 8 位深度。
-
Image.new("RGBA", (256, 256))--RGBA部分将图像指定为“4x8 位像素,带有透明蒙版的真彩色”。那么,既然你明确地创建了一个 8 位图像,为什么你会期望它被保存为除此之外的任何东西? -
其实没有。我主要是从像素数组中寻找 10 位原始图像创建,而不是从 8 位转换。 --- 我显然不是要创建一个明确的 8 位图像,我应该在那里使用什么值?我在这里找不到太多关于 10 位像素的信息:pillow.readthedocs.io/en/stable/handbook/concepts.html
标签: python opencv image-processing python-imaging-library bit-depth