目标
本教程将向你展示
- 如何创建 HDF5 文件?
- 如何创建组?
- 如何检查给定组是否存在?
- 如何创建子组?
源代码
以下代码创建两个组:Group1
和 SubGroup1
,其中 SubGroup1
是 Group1
的子级。
你可以从 此处 下载代码或在 opencv_contrib 源代码库的 modules/hdf/samples/create_groups.cpp
文件中找到它。
#include <iostream>
{
if (!h5io->hlexists("/Group1"))
h5io->grcreate("/Group1");
else
std::cout << "/Group1 has already been created, skip it.\n";
if (!h5io->hlexists("/Group1/SubGroup1"))
h5io->grcreate("/Group1/SubGroup1");
else
std::cout << "/Group1/SubGroup1 has already been created, skip it.\n";
h5io->close();
return 0;
}
std::shared_ptr< _Tp > Ptr
定义 cvstd_wrapper.hpp:23
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
与磁盘上的文件关联的文件存储的“黑盒”表示。
定义 core.hpp:102
说明
首先,我们创建 HDF5 文件
如果给定文件不存在,则会创建它。否则,它已打开以便读写。
接下来,我们创建组 Group1
if (!h5io->hlexists("/Group1"))
h5io->grcreate("/Group1");
else
std::cout << "/Group1 has already been created, skip it.\n";
请注意,在创建之前,我们必须使用函数 cv::hdf::HDF5::hlexists() 检查 /Group1
是否存在。您不能创建名称已存在的组。否则会发生错误。
然后,创建名为 Subgroup1
的子组。为了表明它是 Group1
的子组,必须使用组名 /Group1/SubGroup1
if (!h5io->hlexists("/Group1/SubGroup1"))
h5io->grcreate("/Group1/SubGroup1");
else
std::cout << "/Group1/SubGroup1 has already been created, skip it.\n";
请注意,在创建子组之前,我们必须确保其父组存在。否则会发生错误。
最后,我们必须关闭文件
结果
有许多工具可用于检查给定的 HDF 文件,例如 HDFView 和 h5dump。如果您使用 Ubuntu,可以使用以下命令来安装它们
sudo apt-get install hdf5-tools hdfview
HDF Group 官方网站 https://support.hdfgroup.org/HDF5/Tutor/tools.html 也提供二进制文件。
下图显示了使用工具 HDFView 可视化结果
图 1:创建组和子组的结果
h5dump
的输出为
$ h5dump mytest.h5
HDF5 "mytest.h5" {
GROUP "/" {
GROUP "Group1" {
GROUP "SubGroup1" {
}
}
}
}