使用PIL“TypeError:'int'对象不可订阅”

时间:2018-04-09 04:35:55

标签: python python-imaging-library

我尝试使用PIL应用对数映射,但我收到错误TypeError: 'int' object is not subscriptable

我的代码是:

from PIL import Image
import math

photo = Image.open('TurtleLuminance.jpg')
data = photo.getdata()
c = 255 / math.log(1+255)
logarithmic = [int(c * math.log(1+data[x][0]) + c * math.log(1+data[x][1]) + c * math.log(1+data[x][2])) for x in range(len(data))]

gray_image = Image.new('L', photo.size)
gray_image.putdata(logarithmic)
gray_image.save('TurtleLogarithmic.jpg')
photo.close()
gray_image.close()

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

好的,这是交易,我尝试了你的代码并发现它第一次工作,但不是第二次,这发生因为第二次它有一个灰度图像的水平,所以他的像素值是一个整数,其他的是元组(R,G,B)。所以也许你应该检查像素是否是int(p),如果它是转换为元组p =(p,p,p)

 if type(p) == int:
      p = (p,p,p)