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
python之PIL 二值图像处理和保存的更多相关文章
- Python 获取 exe 的 icon 并且保存
Python 获取 exe 的 icon 并且保存 参考链接:https://mail.python.org/pipermail/python-win32/2009-April/009078.html ...
- Python:PIL(三)——Image
学习自:PIL官方文档--Image (2条消息) Python图像处理PIL各模块详细介绍_章子雎的博客-CSDN博客 一.Image模块 1.open 用法 open(fp,mode='r',fo ...
- 关于python中PIL的安装
python 的PIL安装是一件很蛋痛的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy 爬网存图),那么都会使用到 PIL 这库,而这个库是出名的难 ...
- 使用Python的PIL模块来进行图片对比
使用Python的PIL模块来进行图片对比 在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, ...
- python日志按天分割,保存近一个月日志,日志自动清理
python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...
- 使用Python中PIL图形库进行截屏
目的:通过使用Python的一个图形库PIL(Python Image Library)对屏幕进行截图 步骤: 1.下载PIL(路径)并安装 2.新建文件“截屏.py”,右键Edit with IDL ...
- python+xlsxwriter+PIL自动压图贴图到Excel小工具
一.环境 windows10/mac + python3.6 python第三方库 xlsxwriter.PIL.argparse 二.需求 1.运行每条测试case成功与否都需要把截图放在img文件 ...
- Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录
Python 2.7 IDE Pycharm 5.0.3 Selenium:Selenium的介绍及使用,强烈推荐@ Eastmount的博客 PIL : Pillow-3.3.0-cp27-cp27 ...
- 一秒钟带你走进P图世界-----(python)PIL库的使用
python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...
随机推荐
- dmp文件的导入导出
一.dmp文件的导入 方法一(需安装PLSQL) 1.运行PLSQL,在oracle登陆窗口输入用户名和密码登陆到数据库 2.运行工具>导入表,弹出导入对话框 3.单击下方选择文件按钮,在弹出对 ...
- ObjectArx2013新建工程出错的解决办法
最近将一个ObjectArx升级到Arx2013版,使用ObjectArx2013向导时,新建项目时弹出错误"未能加载项目文件.给定编码中的字符无效.第1行,位置1",经网上查找发 ...
- 【转】JVM内存结构 VS Java内存模型 VS Java对象模型
JVM内存结构 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途. 其中有些区域随着虚拟机进程的启动而 ...
- struts2框架之类型转换(参考第二天学习笔记)
类型转换 1. 什么是类型转换 刚才学习了封装请求参数,把表单数据封装到Action(模型)的属性中.表单中的数据都是String类型,但Action(模型)的属性不一定什么类型. 将来我们还需要数据 ...
- Linux内核之进程地址空间
Linux内核之进程地址空间 内核中的函数以相当直接了当的方式获得动态内存: __get_free_pages 或 alloc_pages从分区页框分配器中获得页框; kmem_cache_alloc ...
- jquery $.trim()去除字符串空格
语法jQuery.trim()函数用于去除字符串两端的空白字符. 作用该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止).它会清除包括换行符.空格.制表符等常见的空白字符. ...
- 解决ssh登陆很慢的问题
解决步骤: 先备份/etc/ssh/sshd_config,备份命令为 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 1.su (以root用户登录 ...
- python 基础 three day
本节主要内容: 一. python基本数据类型有哪些? 1. int ==> 整数.主要用来进行数学计算. 2. str ==> 字符串,可以保存少量数据并进行相应的操作 3. boo ...
- python字符串str和字节数组bytes相互转化
1 引言 后续待补充 2 代码 b = b"Hello, world!" # bytes s = "Hello, world!" # string print( ...
- Confluence 6 内存使用和需求
管理 Confluence 性能和内存的使用和有什么资源可用是密切相关的.如果你给 Confluence 更多的内存来缓存内容,Confluence 将会运行得更加迅速,但是相对比较低的内存环境中,C ...