如何使用 PIL 将 1 通道图像转换为 3 通道图像?

How to convert a 1 channel image into a 3 channel with PIL?

我有一张只有一个通道的图像。我想复制这个通道,这样我就可以获得一个具有相同通道的新图像,只需复制三次。基本上就是做一个准RBG图像。

我看到一些关于如何使用 OpenCV 执行此操作的信息,但不是在 PIL 中。在 Numpy 中看起来很简单,但 PIL 又是不同的。我不想养成一直从一个图书馆跳到另一个图书馆的习惯。

这是一种无需仔细查看文档的方法..

假图片:

im = Image.new('P', (16,4), 127)

获取单波段图像的(像素)大小;创建一个相同大小的新 3 波段图像;使用 zip 从原始创建像素元组;把它放到新图像中..

w, h = im.size
ima = Image.new('RGB', (w,h))
data = zip(im.getdata(), im.getdata(), im.getdata())
ima.putdata(list(data))

甚至可能

new = im.convert(mode='RGB')

只需使用:

image = Image.open(image_info.path).convert("RGB")

可以将 1 通道和 4 通道转换为 3 通道