如何读取hdf5文件。并将其绘制为图像

2024-05-20 09:38:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个hdf5格式的月球陨石坑数据集 https://zenodo.org/record/1133969/files/train_craters.hdf5?download=1 但我不知道如何读取它们并查看数据集中的图像


Tags: 数据httpsorg图像download格式trainfiles
2条回答

HDF5是一个任意数据的容器,它被组织成组和数据集(也称为数据模式)。为了有效地处理数据,您需要在开始编码之前理解模式。理想情况下,数据源提供模式。如果不是,那么第一步就是推导模式。您可以通过打开文件并使用HDFView(来自HDF组)查看,或者编写链接答案中所示的小代码段来完成此操作

我看了你的档案。你说你想“看图片”。你不能用这些数据做这件事。我在这里阅读了文件描述:DeepMoon Supplemental Materials。有6个感兴趣的文件:

  • 名称\u陨石坑。hdf5-数据集中图像的陨石坑位置和大小的HDF存储
  • name\u images.hdf5-输入DEM图像并输出数据集的目标,其中:
    • 验证数据集的名称=dev
    • 名称=测试数据集的测试
    • 名称=训练数据集的训练

因此,如果需要训练图像数据,需要下载train_images.hdf5文件。警告:它是9.9 GB

关于train_craters.hdf5文件的评论:
此文件由Pandas创建。该文件有30000个组,每个图像1个(名为“img_uxxxxx”)。每组有4个数据集,分别命名为:“轴0”、“轴1”、“块0\u项”和“块0\u值”。它们有关于每个图像的数据,但没有任何图像数据。例如,“轴0”和“块0项目”都有以下条目:

Diameter (km)
Lat
Long
x
y
Diameter (pix)

“块0_值”中有数据。以下是“img_u00000/block0_值”中的一个示例:

[[ 5.32341731 -35.10135397 -101.80962272 161.77188631 252.6564721 10.87213217]  
 [ 5.38713978 -34.86402264 -102.38375512 132.62561605 237.8560143 11.00227398]]

从中你可以得到:

Diameter (km)[0] = 5.32341731
Lat[0] = -35.10135397
Long[0] = -101.80962272
x[0] = 161.77188631
y[0] = 252.6564721
Diameter (pix)[0] = 10.87213217

Diameter (km)[1] = 5.38713978
Lat[1] = -34.86402264
Long[1] = -102.38375512
x[1] = 132.62561605
y[1] = 237.8560143
Diameter (pix)[1] = 11.00227398

所以,这提供了关于每个图像的一些基本信息…但不是可以转换为图像的像素值数组

对于阅读HDF5文件的部分,我认为这是一个重复的问题,从这篇文章:How to read HDF5 files in Python

对于绘图部分,我建议您查看matplotlib pyplot文档并深入了解其工作原理

文件:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html

教程:https://matplotlib.org/stable/tutorials/introductory/pyplot.html

相关问题 更多 >