python存储16bit和32bit图像的实例


Posted in Python onDecember 05, 2018

笔记:python中存储16bit和32bit图像的方法。

说明:主要是利用scipy库和pillow库,比较其中的不同。

'''
测试16bit和32bit图像的python存储方法
'''
import numpy as np
 
import scipy.misc
from PIL import Image
 
# 用已有的8bit和16bit图作存储测试
path16 = 'D:\Py_exercise\lena16.tif'
path8 = 'D:\Py_exercise\lena8.tif'
tif16 = scipy.misc.imread(path16)  #<class 'numpy.uint16'>
tif8 = scipy.misc.imread(path8)   #<class 'numpy.uint8'>
print(np.shape(tif16),type(tif16[0,0])) 
print(np.shape(tif8),type(tif8[0,0])) 
print()
 
save16 = 'D:\Py_exercise\lena16_save.tif'
save8 = 'D:\Py_exercise\lena8_save.tif'
scipy.misc.imsave(save16, tif16)   #--> 8bit
scipy.misc.imsave(save8, tif8)   #--> 8bit
 
 
# Create a mat which is 64 bit float
nrows = 512
ncols = 512
np.random.seed(12345)
y = np.random.randn(nrows, ncols)*65535 #<class 'numpy.float64'>
print(type(y[0,0]))
print()
 
# Convert y to 16 bit unsigned integers
z16 = (y.astype(np.uint16))    #<class 'numpy.uint16'>
print(type(z16[0,0]))
print()
 
# 用产生的随机矩阵作存储测试
save16 = 'D:\Py_exercise\lena16_save1.tif'
scipy.misc.imsave(save16, z16)     #--> 8bit
 
im = Image.frombytes('I;16', (ncols,nrows), y.tostring())
im.save('D:\Py_exercise\lena16_save21.tif') #--> 16bit
im = Image.fromarray(y)      
im.save('D:\Py_exercise\lena16_save22.tif') #--> 32bit
im = Image.fromarray(z16)      
im.save('D:\Py_exercise\lena16_save23.tif') #--> 16bit
 
# 归一化后的np.float64仍然存成了uint8
zNorm = (z16-np.min(z16))/(np.max(z16)-np.min(z16)) #<class 'numpy.float64'>
print(type(zNorm[0,0]))
save16 = 'D:\Py_exercise\lena16_save11.tif'
scipy.misc.imsave(save16, zNorm)    #--> 8bit
 
# 归一化后的np.float64直接转8bit或16bit都会超出阈值,要*255或*65535
# 如果没有astype的位数设置,会直接存成32bit
zImg = (zNorm*65535).astype(np.uint16) 
im = Image.fromarray(zImg)
im.save('D:\Py_exercise\lena16_save31.tif') #--> 16bit
im = Image.fromarray(zNorm)
im.save('D:\Py_exercise\lena16_save32.tif') #--> 32bit(0~1)

以上这篇python存储16bit和32bit图像的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python修改Excel数据的实例代码
Nov 01 Python
利用Python中的输入和输出功能进行读取和写入的教程
Apr 14 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
python集合用法实例分析
May 30 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
python实现远程控制电脑
May 23 Python
在Pandas中处理NaN值的方法
Jun 25 Python
Python 占位符的使用方法详解
Jul 10 Python
Python表达式的优先级详解
Feb 18 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
Python随机生成身份证号码及校验功能
Dec 04 #Python
python 从文件夹抽取图片另存的方法
Dec 04 #Python
使用Python实现微信提醒备忘录功能
Dec 04 #Python
flask-restful使用总结
Dec 04 #Python
Python读取YUV文件,并显示的方法
Dec 04 #Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 #Python
用python代码将tiff图片存储到jpg的方法
Dec 04 #Python
You might like
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
PHP面向对象法则
2012/02/23 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
用jscript启动sqlserver
2007/06/21 Javascript
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
文本链接逐个出现的js脚本
2007/12/12 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
python数据结构之链表的实例讲解
2017/07/25 Python
Python探索之创建二叉树
2017/10/25 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
python try 异常处理(史上最全)
2019/03/07 Python
python实现对输入的密文加密
2019/03/20 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
美国在线印刷公司:PsPrint
2017/10/12 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
青年文明号汇报材料
2014/12/23 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python