使用Python Imaging Library隔离单个通道

jsm*_*ith 4 python python-imaging-library

所以说我有一个图像,我想让它只显示红色通道,图像看起来是红色的,我怎么用PIL做到这一点?谢谢.

Ano*_*oyz 8

您可以使用Image.split()PIL中的操作将图像分成多个波段:

img = Image.open("image.jpg")
red, green, blue = img.split()
Run Code Online (Sandbox Code Playgroud)

如果图像具有Alpha通道(RGBA),则拆分功能将会返回该通道.更多信息在这里.


jsm*_*ith 5

我找到了答案。而不是使用im.split()将波段转换为灰度,我应该将Image转换为数组,将不需要的波段乘以0,然后将其转换回Image对象。

导入Image和numpy,我做了以下工作:

a = Image.open("image.jpg")
a = numpy.array(a)
a[:,:,0] *=0
a[:,:,1] *=0
a = Image.fromarray(a)
a.show()
Run Code Online (Sandbox Code Playgroud)

这将显示蓝色图像。