如何将 pyplot 图像保存为 python 中的 .h5 文件并使用 HDFView 进行可视化?

How to save a pyplot image as .h5 file in python and visualize with HDFView?

我遇到了这个问题:我想将我制作的情节保存在 .h5 文件中。

我现在做的是::

import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(10,10)
fig = plt.scatter(data[0],data[1])
plt.savefig('image.jpg')

然后我创建 .h5 文件如下:

import cv2
import h5py
image = cv2.imread("image.jpg")
with h5py.File("h5_file.h5", 'a') as hf:   
        Xset = hf.create_dataset(
            name="img", 
            data=image,
            shape=image.shape,
            maxshape=image.shape)

然后,用 HDFView 可视化,我可以看到如下结果:

我需要打开它“作为图像”,我可以看到每个“table”RGB 的图片。

我需要的是 HDFView 中工具>将图像转换为 HDF5 的结果,如下所示:

有什么建议吗?或任何其他要使用的 h5 可视化工具?

问题不在于 HDF5 数据。我复制了您的代码并 运行 创建了 2 个文件。数据(作为 NumPy 数组)的比较表明它们是相同的。区别在于属性:

  • 当您使用 cv2.imread() 读取图像并保存数据时,不会创建任何属性。
  • 当您使用工具>将图像转换为 HDF5 创建文件时,会向数据集添加 5 个属性。 (请注意,此数据集在 HDFView 中具有不同的文件图标。)属性显示在 HDFView 中的 Object Attribute Info 面板上 and/or 您可以使用以下代码获取它们:

代码:

for k,v in ds2.attrs.items():
    print ('attr:',k,'=',v)

输出:

attr: CLASS = b'IMAGE'
attr: IMAGE_MINMAXRANGE = [  0 255]
attr: IMAGE_SUBCLASS = b'IMAGE_TRUECOLOR'
attr: IMAGE_VERSION = b'1.2'
attr: INTERLACE_MODE = b'INTERLACE_PIXEL'

您可以使用以下代码将这些属性添加到您的第一个文件(使用 cv2.imread() 创建):

Xset.attrs.create('CLASS','IMAGE',dtype='S6')
Xset.attrs.create('IMAGE_MINMAXRANGE',[0, 255],dtype=np.uint8)      
Xset.attrs.create('IMAGE_SUBCLASS','IMAGE_TRUECOLOR',dtype='S16')
Xset.attrs.create('IMAGE_VERSION','1.2',dtype='S4')
Xset.attrs.create('INTERLACE_MODE','INTERLACE_PIXEL',dtype='S16')

这是我在添加属性后在 HDFView 中看到的图像。它几乎相同 - 不再模糊,但数据点颜色不同(金色与蓝色)。不确定是什么原因造成的。也许与默认调色板有关?