gpt4 book ai didi

python - 将图像从 8 位转换为 10 位的问题

转载 作者:行者123 更新时间:2023-12-02 16:50:21 25 4
gpt4 key购买 nike

我正在尝试将 8 位图像转换为 10 位。我认为这就像更改 bin 值一样简单。我试过枕头和 cv-python:

from PIL import Image
from numpy import asarray
import cv2

path = 'path/to/image'
img = Image.open(path)
data = asarray(img)

newdata = (data/255)*1023 #2^10 is 1024
img2 = Image.fromarray(newdata) #this fails

cv2.imwrite('path/newimage.png, newdata)
cv2.imwrite成功写入新文件,即使 bin 上升到 1023,它仍被编码为 8 位图像。
$ file newimage.png
newimage.png: PNG Image data, 640 x 480, 8-bit/color RGB, non-interlaced
在 python 或 linux 中是否有另一种方法可以将 8 位转换为 10 位?

最佳答案

这里有很多事情出错了。

  • 您无缘无故地将 OpenCV ( cv2.imwrite ) 与 PIL ( Image.open ) 混合在一起。不要那样做,因为他们使用不同的 RGB/BGR 排序和约定,您会感到困惑,
  • 您正在尝试将 10 位数字存储在 8 位向量中,
  • 您正试图在 will not work 的 PIL 图像中保存 3 个 16 位 RGB 像素。因为 RGB 图像在 PIL 中必须是 8 位的。

  • 我会建议:
    import cv2
    import numpy as np

    # Load image
    im = cv2.imread(IMAGE, cv2.IMREAD_COLOR)

    res = im.astype(np.uint16) * 4
    cv2.imwrite('result.png', res)

    关于python - 将图像从 8 位转换为 10 位的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64541555/

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