笔记: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) #

tif8 = scipy.misc.imread(path8) #

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 #

print(type(y[0,0]))

print()

# Convert y to 16 bit unsigned integers

z16 = (y.astype(np.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)) #

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 16bit转8bit的工具_python存储16bit和32bit图像的实例相关推荐

  1. python 16bit转8bit的工具_wav文件16bit量化比特转8bit量化比特

    将 WAV16bit 量化比特转为 8bit 量化比特 #include #include /* wav 音频头部格式 */ typedefstruct _wave_pcm_hdr { char ri ...

  2. python开发web运维工具_Python web 开发工具箱

    工欲善其事,必先利其器(装逼工具)Pycharm.专业的python IDE,功能很强大,特别喜欢它的代码merge工具,不想被编辑器折腾死的推荐直接使用,五星级推荐.(除了内存占用大点) vim.本 ...

  3. idle不是python自带的开发工具_Python的开发工具

    通常情况下,为了提高开发效率,需要使用相应的开发工具.进行Python开发也可以使用开发工具.下面将详细介绍Python自带的IDLE 一使用自带的IDLE 在安装Python后,会自动安装一个IDL ...

  4. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用

    注:本文所指的YUV均为YUV420中的I420格式(最常见的一种),其他格式不能用以下的代码. 位深为8bit时,每个像素占用1字节,对应文件指针的fp.read(1): 位深为10bit时,每个像 ...

  5. python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...

    相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...

  6. python可以做哪些小工具_python的简单实用小工具

    在python进行自动化编写的过程中,常常需要造一些数据,比如,获取随机的合法IP,随机的字符串,当前的时间等,下面的一些方法应该可以用到,希望对你有所帮助 #!/user/bin/env pytho ...

  7. python爬取视频的工具_Python爬取视频(其实是一篇福利)

    原博文 2018-01-09 00:14 − 窗外下着小雨,作为单身程序员的我逛着逛着发现一篇好东西,来自知乎 你都用 Python 来做什么?的第一个高亮答案. 到上面去看了看,地址都是明文的,得, ...

  8. python代码行数统计工具_Python实现代码行数统计工具的功能(实例)

    本篇文章给大家带来的内容是关于Python实现代码行数统计工具的功能(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们经常想要统计项目的代码行数,但是如果想统计功能比较完善 ...

  9. python引流脚本开发工具_Python脚本 抖X自动关注粉丝引流脚本

    #python 3.6.4 # encoding:utf-8 #确保已连接好adb #1080 2280 分辨率,一加6测试通过 #抖音版本20200618 import os import cv2 ...

最新文章

  1. 联想x250为什么这么贵_为什么ThinkPad这么贵?
  2. python中变量名有哪些_Python变量范围有哪些?如何在Python中定义变量?
  3. spring AbstractBeanDefinition创建bean类型是动态代理类的方式
  4. 【深度学习】empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=None
  5. HTML中文编辑器 v1.31
  6. ArcGIS API for Silverlight 学习笔记(1)
  7. Windows环境中jdk的下载、安装与配置
  8. Java中的反射和Java中的访问修饰符
  9. tcp假连接_TCP 的那些事儿(上)
  10. 3.1.2 Score Inflation 总分
  11. 计算机联锁维修管理机,计算机联锁试卷
  12. 咱们的课程里,有微信的这种菜单示例吗?---酷课堂iOS交流群问答整理(201810期)
  13. 串口线接法是什么 详细步骤介绍
  14. nRF51822 官方 Blinky 工程(多彩 LED)
  15. 发现同义词 python_python同义词替换的实现(jieba分词)
  16. html5创建网站的步骤,自己建网站的流程是什么,自己建网站需要什么步骤?
  17. win10计算机证书管理器,win10系统iE浏览器导入数字证书的详细办法
  18. Oracle和MySQL不同编码格式下varchar所能存储的中文数量
  19. Micro:bit - 功能引脚介绍
  20. 扣哒世界CodeCombat:少儿编程的“传道、授业、解惑”-环球网

热门文章

  1. 错误 eventqueue.java_线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException [duplicate]...
  2. OCO-2、OCO-3卫星数据下载、读取与可视化(适合初学者)
  3. 煤矿圆环链、接链环市场规模有多大?
  4. oracle ebs的权限设计,oracle EBS 系统管理员-手册.doc
  5. SQL server 的除法运算
  6. 已解决fitz.open()失效,高亮
  7. android sax创建xml文件
  8. 微信小游戏开发实战教程12-广告的开通和接入
  9. 8. 【containerd】containerd是否支持volume 像docker一样?
  10. python redis 订阅发布_python 实现redis订阅发布功能