OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
グループの作成

目的

このチュートリアルでは次のことを示す。

  • HDF5ファイルを作成する方法
  • グループを作成する方法
  • 指定したグループが存在するかどうかを確認する方法
  • サブグループを作成する方法

ソースコード

以下のコードは2つのグループ Group1SubGroup1 を作成する。ここで SubGroup1Group1 の子である。

コードはこちらからダウンロードできるほか、opencv_contribソースコードライブラリの modules/hdf/samples/create_groups.cpp ファイルにある。

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/hdf.hpp>
using namespace cv;
int main()
{
Ptr<hdf::HDF5> h5io = hdf::open("mytest.h5");
// "/" means the root group, which is always present
if (!h5io->hlexists("/Group1"))
h5io->grcreate("/Group1");
else
std::cout << "/Group1 has already been created, skip it.\n";
// Note that Group1 has been created above, otherwise exception will occur
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;
}

説明

まず、HDF5ファイルを作成する

Ptr<hdf::HDF5> h5io = hdf::open("mytest.h5");

指定したファイルが存在しない場合は新規作成される。存在する場合は読み書き用に開かれる。

次に、グループ Group1 を作成する

// "/" means the root group, which is always present
if (!h5io->hlexists("/Group1"))
h5io->grcreate("/Group1");
else
std::cout << "/Group1 has already been created, skip it.\n";

グループを作成する前に、/Group1 が存在するかどうかを関数 cv::hdf::HDF5::hlexists() を使って確認しなければならないことに注意する。既存の名前でグループを作成することはできない。そうでなければエラーが発生する。

次に、Subgroup1 という名前のサブグループを作成する。それが Group1 のサブグループであることを示すため、グループ名 /Group1/SubGroup1 を使う必要がある。

// Note that Group1 has been created above, otherwise exception will occur
if (!h5io->hlexists("/Group1/SubGroup1"))
h5io->grcreate("/Group1/SubGroup1");
else
std::cout << "/Group1/SubGroup1 has already been created, skip it.\n";

サブグループを作成する前に、その親グループが存在することを確認しなければならないことに注意する。そうでなければエラーが発生する。

最後に、ファイルを閉じる必要がある

h5io->close();

結果

HDFViewやh5dumpなど、指定したHDFファイルを検査するために利用できるツールは多数ある。Ubuntuを使っている場合は、次のコマンドでインストールできる。

sudo apt-get install hdf5-tools hdfview

The HDF Group公式ウェブサイト https://support.hdfgroup.org/HDF5/Tutor/tools.html からもバイナリが入手できる。

次の図はツールHDFViewで可視化した結果を示す。

Figure 1: Results of creating groups and subgroups

h5dump の出力は次のとおりである。

$ h5dump mytest.h5
HDF5 "mytest.h5" {
GROUP "/" {
GROUP "Group1" {
GROUP "SubGroup1" {
}
}
}
}