如何将 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 中看到的图像。它几乎相同 - 不再模糊,但数据点颜色不同(金色与蓝色)。不确定是什么原因造成的。也许与默认调色板有关?
我遇到了这个问题:我想将我制作的情节保存在 .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 中看到的图像。它几乎相同 - 不再模糊,但数据点颜色不同(金色与蓝色)。不确定是什么原因造成的。也许与默认调色板有关?