说明:主要是利用scipy库和pillow库,比较其中的不同。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
'''
测试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图像的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/index20001/article/details/77965357