gpt4 book ai didi

python - Pillow - 如何使用阈值对图像进行二值化?

转载 作者:行者123 更新时间:2023-12-05 08:36:27 25 4
gpt4 key购买 nike

我想对 png 图像进行二值化。如果可能的话,我想使用 Pillow。我见过两种使用方法:

image_file = Image.open("convert_image.png") # open colour image
image_file = image_file.convert('1') # convert image to black and white

此方法似乎通过对图像进行抖动来处理充满浅色的区域。我不想要这种行为。例如,如果有一个浅黄色圆圈,我希望它变成一个黑色圆圈。

更一般地说,如果像素的 RGB 是 (x,y,z) 如果 x<=t OR y<=t OR z<=t 对于某个阈值 0

我可以将图像转换为灰度或 RGB,然后手动应用阈值测试,但这似乎效率不高。

我看到的第二种方法是这样的:

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

来自 here我不知道这是如何工作的,也不知道这里的阈值是什么或做什么,以及“和 255”做什么。

我正在寻找有关如何应用方法 2 或使用 Pillow 的替代方法的解释。

最佳答案

我认为您需要转换为灰度,应用阈值,然后转换为单色。

image_file = Image.open("convert_iamge.png")
# Grayscale
image_file = image_file.convert('L')
# Threshold
image_file = image_file.point( lambda p: 255 if p > threshold else 0 )
# To mono
image_file = image_file.convert('1')

表达式“p > threshhold and 255”是一个 Python 技巧。 “a and b”的定义是“如果a为假则a,否则b”。所以这将为每个像素生成“False”或“255”,并且“False”将被评估为 0。我的 if/else 以一种可能更易读的方式做同样的事情。

关于python - Pillow - 如何使用阈值对图像进行二值化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68957686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com