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的ORM框架SQLObject入门实例
Apr 28 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
python实现决策树
Dec 21 Python
python用户管理系统的实例讲解
Dec 23 Python
python实现动态创建类的方法分析
Jun 25 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
python tqdm库的使用
Nov 30 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 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
再次研究下cache_lite
2007/02/14 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
基于JQuery的cookie插件
2010/04/07 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python如何实现数据的线性拟合
2019/07/19 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
SQL数据库笔试题
2016/03/08 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
工程监理应届生求职信
2013/11/09 职场文书
迟到检讨书800字
2014/01/13 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
聘任合同书
2015/09/21 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Python使用Web框架Flask开发项目
2022/06/01 Python