使用 h5py 将光栅图像添加到 HDF5 文件
Add raster image to HDF5 file using h5py
如果这是一个新手问题,我深表歉意,但我对 Python 和 HDF5 还很陌生。我正在使用 h5py、numpy 和 Python 2.7。我有来自各种文件的数据需要导入到一个 HDF5 文件中。每个文件的数据将存储在不同的组中。这些组中的每一个都需要包含 1) 来自文件的原始数据作为 m x n 矩阵和 2) 从归一化原始数据生成的图像栅格。
我能够完成第 1 部分,并且能够规范化数据,但我无法将此规范化数据写入光栅图像,因为我不知道如何将光栅图像添加到组中.似乎应该有一种简单、直接的方法来做到这一点,但我已经阅读了文档,但没有找到。如何在 h5py 中执行此操作,如果无法使用 h5py 完成,我应该使用什么来完成此操作?
谢谢!!
HDF5 中的图像没有什么特别之处。 HDF5中图像的link you provided is for the high level library bindings. You can just as easily use the specifications,只是属性。
这是一个非常快速而肮脏的例子:
#!/usr/bin/env python
import numpy as np
import h5py
# Define a color palette
pal = np.array([[0, 0, 168],
[0, 0, 252],
[0, 168, 252],
[84, 252, 252],
[168, 252, 168],
[0, 252, 168],
[252, 252, 84],
[252, 168, 0],
[252, 0, 0]],
dtype=np.uint8
)
# Generate some data/image
x = np.linspace(0,pal.shape[0]-1)
data,Y = np.meshgrid(x,x)
# Create the HDF5 file
f = h5py.File('test.h5', 'w')
# Create the image and palette dataspaces
dset = f.create_dataset('img', data=data)
pset = f.create_dataset('palette', data=pal)
# Set the image attributes
dset.attrs['CLASS'] = 'IMAGE'
dset.attrs['IMAGE_VERSION'] = '1.2'
dset.attrs['IMAGE_SUBCLASS'] = 'IMAGE_INDEXED'
dset.attrs['IMAGE_MINMAXRANGE'] = np.array([0,255], dtype=np.uint8)
dset.attrs['PALETTE'] = pset.ref
# Set the palette attributes
pset.attrs['CLASS'] = 'PALETTE'
pset.attrs['PAL_VERSION'] = '1.2'
pset.attrs['PAL_COLORMODEL'] = 'RGB'
pset.attrs['PAL_TYPE'] = 'STANDARD8'
# Close the file
f.close()
运行例子再看HDFView中的图片:
请注意,您必须使用 "Open As" 打开图像数据才能将其作为图像查看,因为 table 视图是默认视图。
如果这是一个新手问题,我深表歉意,但我对 Python 和 HDF5 还很陌生。我正在使用 h5py、numpy 和 Python 2.7。我有来自各种文件的数据需要导入到一个 HDF5 文件中。每个文件的数据将存储在不同的组中。这些组中的每一个都需要包含 1) 来自文件的原始数据作为 m x n 矩阵和 2) 从归一化原始数据生成的图像栅格。
我能够完成第 1 部分,并且能够规范化数据,但我无法将此规范化数据写入光栅图像,因为我不知道如何将光栅图像添加到组中.似乎应该有一种简单、直接的方法来做到这一点,但我已经阅读了文档,但没有找到。如何在 h5py 中执行此操作,如果无法使用 h5py 完成,我应该使用什么来完成此操作?
谢谢!!
HDF5 中的图像没有什么特别之处。 HDF5中图像的link you provided is for the high level library bindings. You can just as easily use the specifications,只是属性。
这是一个非常快速而肮脏的例子:
#!/usr/bin/env python
import numpy as np
import h5py
# Define a color palette
pal = np.array([[0, 0, 168],
[0, 0, 252],
[0, 168, 252],
[84, 252, 252],
[168, 252, 168],
[0, 252, 168],
[252, 252, 84],
[252, 168, 0],
[252, 0, 0]],
dtype=np.uint8
)
# Generate some data/image
x = np.linspace(0,pal.shape[0]-1)
data,Y = np.meshgrid(x,x)
# Create the HDF5 file
f = h5py.File('test.h5', 'w')
# Create the image and palette dataspaces
dset = f.create_dataset('img', data=data)
pset = f.create_dataset('palette', data=pal)
# Set the image attributes
dset.attrs['CLASS'] = 'IMAGE'
dset.attrs['IMAGE_VERSION'] = '1.2'
dset.attrs['IMAGE_SUBCLASS'] = 'IMAGE_INDEXED'
dset.attrs['IMAGE_MINMAXRANGE'] = np.array([0,255], dtype=np.uint8)
dset.attrs['PALETTE'] = pset.ref
# Set the palette attributes
pset.attrs['CLASS'] = 'PALETTE'
pset.attrs['PAL_VERSION'] = '1.2'
pset.attrs['PAL_COLORMODEL'] = 'RGB'
pset.attrs['PAL_TYPE'] = 'STANDARD8'
# Close the file
f.close()
运行例子再看HDFView中的图片:
请注意,您必须使用 "Open As" 打开图像数据才能将其作为图像查看,因为 table 视图是默认视图。