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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 如何使用Open-cv或PIL将24位PNG图像转换为32位相关的知识,希望对你有一定的参考价值。

我想将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)
答案

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

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

另一答案

我查看了你链接的代码中的christmas.png图像,它看起来像是带有调色板和8位alpha通道的624x8像素图像。

假设样本图像有效,您可以通过拍摄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

以上是关于Python - 如何使用Open-cv或PIL将24位PNG图像转换为32位的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python / PIL 或类似方法缩小空格

如何使用 PIL(python 成像)创建透明 gif(或 png)

如何在Python 3中将QImage(QPixmap)转换为PIL图像?

如何使用 Python PIL 或 CV 裁剪图像?

如何在 Python 3 中将 QImage(QPixmap) 转换为 PIL Image?

如何使图像亮度均匀(使用 Python/PIL)