使用PIL将灰度图像转换为RGB图像

3

我正在尝试使用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

任何帮助都将不胜感激。
1个回答

0
你把图像和值混淆了。使用 img 会得到灰度级别,所以你应该使用它:
grey = img.getpixel((x, y))

或者,因为你将 img 转换为 rgb(使用 RGB 值),你也可以写成:

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

但是,看起来你正在进行不必要的计算(好吧,可能这只是完整代码中的错误部分)。

错误在于:img.getpixel()将返回一个数字(在黑白图像上),而int不可迭代,因此无法拆分为rgb。但是rgb.getpixel()返回一个长度为3的列表,可以迭代。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接