我试图通过操作像素将RGB图像转换为灰度:
from PIL import Image
img = Image.open("image.jpg")
pixels = img.load()
for i in range(img.size[0]):
for j in range(img.size[1]):
avg = int(pixels[i,j][0] + pixels[i,j][1] + pixels[i,j][2] / 3)
pixels[i,j] = (avg,avg,avg)
img.show()
它大部分是灰色的,但图像的白色部分变得更加明显。我该如何解决这个问题?
您缺少括号。试试这一行:
avg = int((pixels[i,j][0] + pixels[i,j][1] + pixels[i,j][2]) / 3)
尝试加权平均值:
ave = int(0.30 * pixels[i,j][0] + 0.59 * pixels[i,j][1] + 0.11 * pixels[i,j][2])
根据这篇文章,这些权重应该"解释眼睛对不同颜色的敏感性"。
您缺少括号,但图像对象实际上具有转换为黑白的功能。试试这个:
img = Image.open("image.jpg").convert("L")
您可以在此处找到完整的文档