将灰度图像转换为二值图像
我正在尝试使用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
。