我尝试使用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()
有人可以帮助我吗?
答案 0 :(得分:0)
好的,这是交易,我尝试了你的代码并发现它第一次工作,但不是第二次,这发生因为第二次它有一个灰度图像的水平,所以他的像素值是一个整数,其他的是元组(R,G,B)。所以也许你应该检查像素是否是int(p),如果它是转换为元组p =(p,p,p)
if type(p) == int:
p = (p,p,p)