我正在使用Python Imaging Library进行一些非常简单的图像处理,但是我无法将灰度图像转换为单色(黑白)图像 . 如果我在将图像更改为灰度(转换('L'))后保存,则图像呈现为您所期望的 . 但是,如果我将图像转换为单色,单波段图像,它只会给我噪声,如下图所示 . 有没有一种简单的方法可以使用PIL / python将彩色png图像转换为纯黑白图像?
from PIL import Image
import ImageEnhance
import ImageFilter
from scipy.misc import imsave
image_file = Image.open("convert_image.png") # open colour image
image_file= image_file.convert('L') # convert image to monochrome - this works
image_file= image_file.convert('1') # convert image to black and white
imsave('result_col.png', image_file)
6 回答
产量
另一个选项(当您需要使用分段掩码时,例如用于科学目的非常有用)只是应用一个阈值:
./binarize.py -i convert_image.png -o result_bin.png --threshold 200
看起来像这样:正如Martin Thoma所说,你需要正常应用阈值 . 但是你可以使用简单的矢量化来实现这一点,它的运行速度比该答案中使用的for循环要快得多 .
下面的代码将图像的像素转换为0(黑色)和1(白色) .
从unutbu获得的结果判断,我得出结论,scipy的
imsave
不理解单色(模式1)图像 .仅限PIL解决方案,用于创建具有自定义阈值的双层(黑白)图像:
只是
你得到一个抖动的图像 .
因为从PIL
convert("1")
返回值"True"或"False" . 尝试打印它,将显示:[False, False, True]
单支架 .而numpy数组使用双括号,如
[[False, False, True]]
或[[0, 0, 1]]
,对吗?