首页 文章

使用h5py将光栅图像添加到HDF5文件

提问于
浏览
6

如果这是一个新手问题我很抱歉,但我对Python和HDF5还不熟悉 . 我正在使用h5py,numpy和Python 2.7 . 我有来自各种文件的数据需要导入到一个HDF5文件中 . 每个文件的数据将存储在不同的组中 . 这些组中的每一个都需要包含1)来自文件的原始数据作为m×n矩阵和2)从归一化原始数据生成的图像栅格 .

我能够完成第1部分,并能够规范化数据,但我无法将此规范化数据写入光栅图像,因为我不知道如何将光栅图像添加到组中 . 似乎应该有一个简单,直接的方法来做到这一点,但我已经阅读了文档,但没有找到 . 如何在h5py中执行此操作,如果无法使用h5py完成此操作,我应该使用什么来完成此操作?

谢谢!!

1 回答

  • 7

    HDF5中的图像没有什么特别之处 . 您提供的link用于高级库绑定 . 您可以轻松使用HDF5中的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中查看图像:

    Image within HDF5 file

    请注意,您必须使用“打开为”打开图像数据才能将其视为图像,因为表格视图是默认值 .

相关问题