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

Posted

技术标签:

【中文标题】如何使用 PIL Image.point(table) 方法将阈值应用于 256 灰度图像?【英文标题】:How to I use PIL Image.point(table) method to apply a threshold to a 256 gray image? 【发布时间】:2011-09-23 00:53:23 【问题描述】:

我有 8 位灰度 TIFF 图像,我想使用 75% 白色(十进制 190)阈值将其转换为单色。在 Image.convert(mode) 方法部分,PIL 手册说:

“将灰度图像转换为位级图像(模式“1”)时,所有非零值都设置为 255(白色)。要使用其他阈值,请使用点法。”

Image.point(table) 方法表示它通过给定的表映射每个像素。

im.point(table, mode) => 图像 im.point(function, mode) => 图像

"通过表格映射图像,并即时转换。在当前版本的 PIL 中,这只能用于一步将'L'和'P'图像转换为'1',例如阈值图片。”

如何创建与我需要的 75% 阈值对应的表(或函数)?

【问题讨论】:

pajton 的答案是您想要的答案。你使用 190,但我会使用 p > 191(我知道,差别很小 :)。 感谢您的回答,但在实施过程中发生了一件有趣的事情。我的图像实际上以 TIFF、CCITT group4 开头。我认为转换为 8 位灰色会很容易。但是,PIL 报告“解码器组 4 不可用”。是否还有其他支持 group4 的图像库? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

正如 tahoar 上面所说,您似乎确实需要 and 255

以上是关于如何使用 PIL Image.point(table) 方法将阈值应用于 256 灰度图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PIL 获取图片大小?

python中pil如何导入?

如何使用 PIL 生成圆形缩略图?

如何使用 PIL 将 PNG 图像写入字符串?

PIL二值化验证码图片问题。二值化后出现一堆淡淡的黑点,直接显示图片没问题,保存后再打开就有问题

如何使用 PIL 将 1 通道图像转换为 3 通道?