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爬虫实战之爬取京东商城实例教程
Apr 24 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
python实现翻译word表格小程序
Feb 27 Python
python实现坦克大战
Apr 24 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 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 和 MySQL 基础教程(一)
2006/10/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
办公室人员先进事迹
2014/01/27 职场文书
公益广告标语
2014/06/19 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
旅行社计调工作总结
2015/08/12 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
协议书格式模板
2016/03/24 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
Pandas自定义选项option设置
2021/07/25 Python
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
Redis批量生成数据的实现
2022/06/05 Redis