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 相关文章推荐
wxPython中文教程入门实例
Jun 09 Python
Python对象体系深入分析
Oct 28 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
python中format函数如何使用
Jun 22 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
python迷宫问题深度优先遍历实例
Jun 20 Python
Python Matplotlib绘制条形图的全过程
Oct 24 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实现负载均衡下的session共用功能
2018/04/17 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
关于js类的定义
2011/06/28 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
javascript实现动态标签云
2015/10/16 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
Python内置函数之filter map reduce介绍
2014/11/30 Python
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
利用python开发app实战的方法
2019/07/09 Python
Python hmac模块使用实例解析
2019/12/24 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
结构和类有什么异同
2012/07/16 面试题
舞蹈专业求职信
2014/06/13 职场文书
廉政教育的心得体会
2014/09/01 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
Linux中文件的基本属性介绍
2022/06/01 Servers