如何在PIL中将灰度图像转换为给定的彩色单色图像?

时间:2018-11-09 18:14:44

标签: python python-imaging-library rgb image-conversion

我在convert函数中看到了矩阵参数,但是它的描述不清楚。它说应该是4或12个元组,而无组件含义的解释。

我尝试将其应用于灰度图像,但是失败了。

代码:

from PIL import Image
import matplotlib.pyplot as plt

with open('myimage.png', 'rb') as fp:
    #matrix = (0, 1, 0, 1)
    matrix = (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
    im = Image.open(fp)
    im = im.convert('RGB', matrix)
    plt.imshow(im)
    plt.show()

抛出

 ValueError: image has wrong mode

在Image.py代码中

    if matrix:
        # matrix conversion
        if mode not in ("L", "RGB"):
            raise ValueError("illegal conversion")
        >>>>>> im = self.im.convert_matrix(mode, matrix)
        return self._new(im)

我也不理解,因为这里没有抛出代码,只是引用了一个对象。我找不到它。

1 个答案:

答案 0 :(得分:2)

我认为您正在尝试执行此操作,并且可能具有淡化的图像:

#!/usr/bin/env python3
from PIL import Image

# Open and ensure in RGB mode - in case image is palettised
im = Image.open('toystory.png').convert('RGB')

# Crude conversion to black and white using 20% red, 50% green and 30% blue
matrix = (0.2, 0.5, 0.3, 0.0, 0.2, 0.5, 0.3, 0.0, 0.2, 0.5, 0.3, 0.0)

result = im.convert('RGB',matrix)

result.save('result.png')

将其转换为

enter image description here

对此:

enter image description here


如果将矩阵更改为以下矩阵,它将交换红色和蓝色通道:

matrix = (0,0,1,0, 0,1,0,0, 1,0,0,0) 

enter image description here