我有一个灰度16位tif图像数据库,其像素范围大约为768到1280(非常暗)。我想从极值中拉伸数据并将结果保存在8位jpg中。
from PIL import Image
image = Image.open(inp_16bits)
image.mode = 'I'
mi, ma = image.getextrema()
ratio = 256.0 / (ma - mi)
mapping = lambda i: (i-mi) * ratio
image.point(mapping).convert('L').save(out_8bits)
我的映射功能正在运行,但不能作为点的参数,我的代码返回
" TypeError:不支持的操作数类型 - :' _E'和' int'"。
如何正确实现我的功能以使其与Image.point一起使用?或者有一种从我的函数映射创建查找表的简单方法吗?
答案 0 :(得分:0)
通过_E对象构造函数,我找到了__add__
和__mul__
方法。
lambda i: (i.__add__(-mi)).__mul__(ratio)# doesnt work but
lambda i: (i * ratio).__add__(-mi*ratio)# works
第一个返回
ValueError:非法表达。
我不想与之抗争,所以我尝试了不同的方式来实现我的操作,最后第二个确实有效。