如何使用PIL Image.point(table)方法将阈值应用于256灰度图像?

15
我有一些8位灰度TIFF图像,我想使用75%的白色(十进制190)阈值将它们转换为单色图像。在Image.convert(mode)方法部分中,PIL手册说:
当将灰度图像转换为比特级图像(模式“1”)时,所有非零值都设置为255(白色)。要使用其他阈值,请使用point方法。
Image.point(table)方法指出,它会通过给定的表来映射每个像素。
如何创建对应于我需要的75%阈值的表格(或函数)?

pajton的回答是你想要的。你使用190,但我会使用p > 191(我知道,差别很小:)。 - tzot
谢谢你的回答,但在实现过程中出现了一件有趣的事情。我的图像实际上是以TIFF、CCITT group4的格式开始的。我认为将其转换成8位灰度会很容易。然而,PIL报告“解码器group4不可用”。是否有另一个图像库支持group4? - tahoar
2个回答

18

我在这个答案 "Write TIFF file in python from String" 中找到了完整的解决方案。该函数必须包括 "and 255"。

threshold = 191  
im = im.point(lambda p: p > threshold and 255)  

2

尝试使用 im.point(lambda p: p > 190) 并发布结果。


正如tahoar所说,你似乎需要使用“& 255”。 - Ben

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