首页 > 解决方案 > 在 Python 中将图像转换为黑白与将图像转换为单色(灰度)

问题描述

我有下面的图片filename = '1.png'

在此处输入图像描述

每当我尝试使用下面的代码将其转换为单色时,图像与输入图像相同。

image_counter = 1
path = 'sample/' + str(image_counter) + '.png'
image = Image.open(path).convert('L')  # Convert it into monochrome.
image = Image.fromarray(image)
image.save('monochrome.png')  

单色输出:

在此处输入图像描述

但是当我将它转换为黑白图像时,输出是不同的,并且不会产生直线边框。

image_counter = 1
path = 'sample/' + str(image_counter) + '.png'
image = Image.open(path).convert('1')  # Convert it into black and white.
image = Image.fromarray(image)
image.save('blackandwhite.png') 

在此处输入图像描述

放大后,您可以真正观察到不直的边界。

在此处输入图像描述

为什么?

标签: pythonpython-3.ximageimage-processing

解决方案


将灰度(“L”)或“RGB”图像转换为双电平(模式“1”)图像的默认方法使用 Floyd-Steinberg 抖动来近似原始图像亮度级别。如果抖动为 NONE,则所有非零值都设置为 255(白色)。

抖动方法,用于从模式“RGB”转换为“P”或从“RGB”或“L”转换为“1”。可用方法为 NONE 或 FLOYDSTEINBERG(默认)。


推荐阅读