如何将灰度图像转换为 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)
我在 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)