我在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)
我也不理解,因为这里没有抛出代码,只是引用了一个对象。我找不到它。
答案 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')
将其转换为
对此:
如果将矩阵更改为以下矩阵,它将交换红色和蓝色通道:
matrix = (0,0,1,0, 0,1,0,0, 1,0,0,0)