python之PIL 二值图像处理和保存

0.

 

1.参考

http://pszpcl.baike.com/article-77327.html
windows 图片右键:属性 详细信息 位深度
位深度 用于指定图像中的每个像素可以使用的颜色信息数量。
    位深度为 1 的图像的像素有两个可能的值:黑色和白色。
    位深度为 8 的灰度模式图像有 256 个可能的灰色值。
    RGB 图像由三个颜色通道组成。8 位/像素的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。
    有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。

2.结论:

载入黑白图片也可能是0/1二值

保存黑白图片优选 gif,自动转为0/1二值,且windows下显示正常。

 

3. 载入图片后的探索

#载入黑白图
In [82]: img.mode  
Out[82]: 'P'
In [114]: img.getbands()
Out[114]: ('P',)    
In [83]: img.getcolors()
Out[83]: [(1048, 0), (102, 1)]
In [84]: print list(img.getdata())[:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
In [90]: set(img.getdata())
Out[90]: {0, 1}

#载入彩色图
In [103]: imgc.mode
Out[103]: 'RGBA'
In [100]: imgc.getbands()
Out[100]: ('R', 'G', 'B', 'A')
In [106]: imgc.getcolors()
Out[106]:
[(34, (255, 255, 255, 255)),
 (11, (250, 215, 245, 255)),
In [112]: list(imgc.getdata())
Out[112]:
[(244, 245, 245, 255),
 (245, 245, 245, 255), 

 

4. 保存二值黑白图片要区分 gif / png

In [176]: img=Image.open('split_image/61234.png')
In [177]: img.show()

In [178]: img.getcolors()  #注意原图 0/1 足以显示为黑白图像
Out[178]: [(1048, 0), (102, 1)]

In [179]: gray = img.convert('L')
In [180]: gray_array = np.array(gray)
In [181]: Image.fromarray(gray_array).show()
In [182]: gray_array
Out[182]:
array([[249, 249, 249, ..., 249, 249, 249],
       [249, 249, 249, ..., 249, 249, 249],
       [249, 249, 249, ..., 249, 249, 249],
       ...,
       [249, 249, 249, ..., 249, 249, 249],
       [249, 249, 249, ..., 249, 249, 249],
       [249, 249, 249, ..., 249, 249, 249]], dtype=uint8)

In [183]: bilevel = Image.fromarray(np.where(gray_array<100,0,200))
In [184]: bilevel.getcolors()
Out[184]: [(1048, 200), (102, 0)]

In [185]: bilevel.save('png.png')
In [186]: bilevel.save('gif.gif')

In [187]: Image.open('png.png').getcolors()  #png灰度值得以保留
Out[187]: [(1048, 200), (102, 0)]

In [188]: Image.open('gif.gif').getcolors()  #gif只剩0/1
Out[188]: [(102, 0), (1048, 1)]

原图png

PIL处理后保存的gif:

PIL处理后保存的png,在windows中也显示为黑图,PIL show显示正常:

d

 

posted @ 2017-08-25 15:45  my8100  阅读(4058)  评论(0编辑  收藏  举报