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

15 投票
2 回答
17366 浏览
提问于 2025-04-16 20:19

我有一些8位灰度的TIFF图片,我想把它们转换成单色图像,使用75%的白色阈值(也就是190)。在Image.convert(mode)这个方法的说明中,PIL手册提到:

“当把灰度图像转换成位图图像(模式为‘1’)时,所有非零的值都会被设置为255(白色)。如果想使用其他的阈值,可以使用point方法。”

Image.point(table)这个方法说明说,它会通过给定的表来处理每个像素。

im.point(table, mode) => image
im.point(function, mode) => image

“通过表来处理图像,并实时转换。在当前版本的PIL中,这个方法只能用来将‘L’和‘P’类型的图像一步转换为‘1’类型,比如用来设置图像的阈值。”

我该如何创建一个对应于我需要的75%阈值的表(或函数)呢?

2 个回答

2

试试这个代码:im.point(lambda p: p > 190),然后把结果发出来。

18

我在这个回答中找到了完整的解决方案:“在Python中从字符串写入TIFF文件”。这个函数必须包含“和255”。

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

撰写回答