2

我正在尝试在 python 中将灰度图像转换为 RGB 图像格式的代码,但是每次尝试执行它时都会引发 TypeError。

我的代码如下:

from PIL import Image
path = "bw.jpg"

img = Image.open(path)
rgb = img.convert("RGB")
width,height = rgb.size

for x in range(width):
    for y in range(height):
        r, g, b = img.getpixel((x, y))
        value  = r* 299.0/1000 + g* 299.0/1000 + b * 299.0/1000
        value = int(value)
        rgb.putpixel ((x, y), value)
rgb.save("abc.png")

我得到的错误是:

r, g, b = img.getpixel((x, y))

TypeError: 'int' object is not iterable

任何帮助都将是非常可观的。

4

1 回答 1

0

您混淆了图像和值。随着img你得到灰度,所以你应该使用这个:

grey = img.getpixel((x, y))

或者,因为您转换imgrgb(使用 RGB 值),您还可以编写:

r, g, b = rgb.getpixel((x, y))

但是,您似乎正在进行不必要的计算(好吧,这可能只是完整代码的损坏部分)。

错误:img.getpixel()将返回一个数字(在 BW 图像上),并且int不可迭代地拆分为rgb,因此错误。但rgb.getpixel()返回一个可迭代的列表(长度为 3)。

于 2018-04-09T14:01:30.543 回答