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

How to convert grayscale image to given color monchrome image in PIL?

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

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

代码:

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)

这个我也看不懂,因为这里没有抛代码,只是引用了一个对象。我无法追踪到它。

我认为您正在尝试这样做并且可能有一个调色板图像:

#!/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')

转换为:

进入这个:


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

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