将灰度图像转换为二值图像

0 投票
1 回答
1174 浏览
提问于 2025-04-17 08:44

我正在尝试使用PIL库的“point”方法将一张图片转换成二值图像(也就是只有黑白两种颜色的图像),代码如下:

def mappoint (i):
   if i > 1: return 1
   else: return 0

if __name__=="__main__":
   img = Image.open('no.tif')
   img = img.point(mappoint)
   img.save('ok.tif')

但是结果却是一张全黑的图片!

补充说明:如果我写了一个函数 mappoint (i): if i > 1: return 255,那么结果就是一张全白的图片!而且如果我在这个函数里打印出i的值,它会显示从0到255的值(就像你用 print range(256) 一样),所以每个i并不是每个像素的值,对吧?还有一种方法可以直接通过在打开图片时使用convert来生成二值图像:img = Image.open(img_name).convert('1'),但默认的阈值是127,文档里说如果想要其他的阈值就得使用point方法。

1 个回答

1

这个函数确实是有效的,你生成了一张由0和1组成的图像。之所以看起来是黑色的,是因为标准图像的亮度范围是从0到255。

你用的亮度值1看起来是黑色的,因为在0到255的范围内,1非常接近0。

如果你想要一张黑白图像,可以把你的 mappoint 改成 if i>1: return 255

撰写回答