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

时间:2018-05-08 23:53:58

标签: python python-imaging-library channels

我的图片有一个频道。我想复制这一个频道,以便我可以获得一个具有相同频道的新图像,只复制三次。基本上,制作一个准RBG图像。

我看到有关如何使用OpenCV执行此操作的一些信息,但在PIL中没有。在Numpy看起来很容易,但PIL也是如此。我不想养成从图书馆一直跳到图书馆的习惯。

2 个答案:

答案 0 :(得分:2)

这是一种不用太苛刻文档的方法..

假图片:

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')

答案 1 :(得分:2)

只需使用:

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

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