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 的描述符 descriptor详解
Feb 27 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python的多维空数组赋值方法
Apr 13 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
浅析python的优势和不足之处
Nov 20 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
Python OpenCV形态学运算示例详解
Apr 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数组输出html表格的方法
2014/02/24 PHP
自写的一个jQuery圆角插件
2010/10/26 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
解决layer.open后laydate失效的问题
2019/09/06 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
Python 正则表达式操作指南
2009/05/04 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
python实现批量转换图片为黑白
2020/06/16 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
大学自主招生推荐信
2014/05/10 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年村委会工作总结
2014/11/24 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
Python基本数据类型之字符串str
2021/07/21 Python
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js