如何保存模式'F'的图像?(Python/PIL)

12 投票
2 回答
27107 浏览
提问于 2025-04-16 14:18

我有一个包含浮点数的ndarray(多维数组),我想把它保存起来。不过,我希望保存的值还是浮点数。我发现唯一可以保存浮点数据的格式是tiff,但它并不会显示实际的图像。

from Image import *
from numpy import *

img = random.random((300, 300)) #float numbers, i have actual data in my image though
img = fromarray(img)
img.save('test.tiff')

2 个回答

1

ImageJ可以打开浮点格式的Tiff图片。

12

你的例子实际上是在保存一个浮点数格式的TIFF文件。我通过检查TIFF文件的头部确认了这一点,发现“每个像素的样本”这个标签(0x153)的值是3,这说明它是浮点数数据。用你的例子来说:

import Image
from numpy import *

data = random.random((2, 2))
img1 = Image.fromarray(data)
img1.save('test.tiff')
img2 = Image.open('test.tiff')

f1 = list(img1.getdata())
f2 = list(img2.getdata())
print f1 == f2
print f1

输出结果:

True
[0.27724304795265198, 0.12728925049304962, 0.4138914942741394, 0.57919681072235107]

关于TIFF6文件格式的详细信息

更新: 在Mac桌面上查看的64x64像素的图像示例:

enter image description here

撰写回答