Python-如何使用Open-CV或PIL将24位PNG图像转换为32位

时间:2018-09-12 12:39:20

标签: python numpy opencv image-processing python-imaging-library

我想将24位PNG图像转换为32位,以便可以将其显示在LED矩阵上。这是我使用过的代码,但它将24位转换为48位

import cv2
import numpy as np
i = cv2.imread("bbb.png")
img = np.array(i, dtype = np.uint16)
img *= 256
cv2.imwrite('test.png', img)

2 个答案:

答案 0 :(得分:2)

我认为您已经将颜色位深度与输入图像/阵列的大小混淆了。在评论中发布的链接中,没有提到32深度。该教程链接处的脚本使用的图像具有3通道,8位颜色(红色,绿色和蓝色代码值,每个值表示为0-255之间的数字)。输入图像必须与数组具有相同的高度,但可以具有不同的宽度以允许滚动。

有关位深度的更多信息:https://en.wikipedia.org/wiki/Color_depth

答案 1 :(得分:1)

我查看了链接到的代码中的christmas.png图片,它看起来像是一个624x8像素的图片,其中包含一个调色板和一个8位的alpha通道。

假设示例图像有效,则可以通过拍摄PNG图像并添加完全不透明的alpha通道来制作具有相同特征的图像,

#!/usr/local/bin/python3
from PIL import Image

# Load the image and convert to 32-bit RGBA
im = Image.open("image.png").convert('RGBA')

# Save result
im.save("result.png")

我生成了一个渐变图像并应用了该处理并得到了它,所以也许您可以尝试:

enter image description here