3

ノードの名前を知らなくても、(FileStorage ライブラリを使用して) OpenCV で YAML ファイルを解析できますか?

たとえば、次の YAML ファイル:

%YAML:1.0
descriptors1: !!opencv-matrix
   rows: 82
   cols: 64
   dt: f
   data: [ ... ]
descriptors2: !!opencv-matrix
   rows: 161
   cols: 64
   dt: f
   data: [ ... ]

そして、次のことを行わずに、ノードごとに解析します (OpenCV Matrix by OpenCV Matrix):

FileStorage fs;
...

Mat firstMatrix;
Mat secondMatrix;
fs["descriptors1"] >> firstMatrix;    
fs["descriptors2"] >> secondMatrix;
4

3 に答える 3

1

マトリックスがすべて最上位にマップされている場合(例のように)、対応するノードの名前を知らずにマトリックスにアクセスする方法はありません。FileStorage::operator[]ノードの名前を指定する文字列引数のみを取ります。

回避策として、YAML を別のメソッドで解析してノード名を取得し、その後にアクセスすることができますFileStorage

于 2013-08-01T23:25:04.593 に答える
0

私は同様の問題を抱えていましたが(ここ)、私の場合、ノードは最上位にありませんでした。すべての要素にアクセスできるとは思いませんが、FileStorage::getFirstTopLevelNode.

@Aurelius のアイデアに基づいて、別の回避策として、元の YAML をノード構造内にダンプする新しい YAML ファイルを作成することもできます (数行を追加してインデントを増やします)。次に、新しい YAML ファイルを読み取り、最初のノードを取得して、残りのデータをFileNodeIterator. これにより、名前を知らなくても要素にアクセスできるようになります。

于 2013-08-02T11:21:29.067 に答える