假设我有一张图片,我想让它只显示红色通道,使图像呈现红色,我该如何使用PIL实现?谢谢。
假设我有一张图片,我想让它只显示红色通道,使图像呈现红色,我该如何使用PIL实现?谢谢。
Image.split()
操作将图像分离成不同的波段:img = Image.open("image.jpg")
red, green, blue = img.split()
如果图像具有alpha通道(RGBA),split函数还会额外返回它。更多信息请参见此处。a = Image.open("image.jpg")
a = numpy.array(a)
a[:,:,0] *=0
a[:,:,1] *=0
a = Image.fromarray(a)
a.show()
这将展示一张蓝色的图片。
虽然时间有点晚,但由于我们正在处理numpy,因此可以使用布尔索引。
def channel(img, n):
"""Isolate the nth channel from the image.
n = 0: red, 1: green, 2: blue
"""
a = np.array(img)
a[:,:,(n!=0, n!=1, n!=2)] *= 0
return Image.fromarray(a)
如果您想从图像中提取一个单独的通道(而不是生成具有R、G和B通道的图像,但G和B通道全部为零),可以执行以下操作:
img = Image.open("image.jpg")
red = img.getchannel('R')
# OR
red = img.getchannel(0) # Avoids internal lookup of 'R' in img.getbands()