2011-12-21 35 views
0

我试图将图像转换为使用PIL的方法“点”的二进制图像(二层)如下:转换灰色财政imageto二层

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') 

,但它给了我一个黑色的形象!

编辑:如果我确定def mappoint (i): if i > 1: return 255那么它会给出一个全白的图像!如果我在mappoint中打印i的值,它会显示0到255之间的值(如果你打印的范围是256),那么每个i都不是每个像素的值,是吗?还有另一种方法只是通过当我们打开图像转换,使二层:IMG = Image.open(img_name).convert('1')但默认情况下使用的阈值是127,和医生说要使用点的方法,如果我们想要另一个门槛

回答

1

功能做工作,你已经生成了0和1的图像。它看起来黑色的原因是因为标准的图像具有强度从0到255

比如你做的1的强度看起来黑色的,因为从0到255的比例,1是非常接近于0

如果您需要黑白图像,请将mappoint更改为if i>1: return 255

+0

如果我做'def mappoint(i):if i> 1:return 255',那么它会给出一个全白的图像!如果我在mappoint中打印i的值,它会显示0到255之间的值(如果你打印的范围是256),那么每个i都不是每个像素的值,是吗?还有另外一种方法可以在我们打开图像时通过使用convert来创建bilevel:'img = Image.open(img_name).convert('1')'但默认情况下使用的阈值是127,并且文档说要使用如果我们想要另一个门槛,可以使用点法 – shn 2011-12-21 00:35:45

+0

那么,你想要什么样的门槛?你**是否尝试**默认阈值?你对这个结果感到不满意吗? – 2011-12-21 00:56:31

+0

如果你看看你的'mappoint'定义......你已经把阈值设置为1.所以只有黑色像素(和非常接近黑色的像素)将保持黑色,其余的将保持白色。机会是你正在测试这个图像没有足够的黑色像素,你会注意到.....尝试将阈值改为127以查看我的意思。 – 2011-12-21 01:11:20