将 RGB 图像转换为灰度会导致白色发光



我试图通过操作像素将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")

您可以在此处找到完整的文档

最新更新