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

时间:2018-03-07 05:15:16

标签: python-imaging-library rgb gray-code

我正在尝试使用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 :(得分:0)

您混淆了图像和值。使用img可以获得greylevel,因此您应该使用:

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

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

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

但是,似乎你要进行不必要的计算(好吧,可能这只是完整代码的破解部分)。

错误:img.getpixel()将返回一个数字(在BW图像上),int不可迭代,可以分为rg和{{1所以错误。但是b返回一个列表(长度为3),这是可迭代的。