OpenCv で生成された一連の YAML ファイルがあり、それらを yaml-cpp で解析したいと考えています。
単純なことは大丈夫ですが、行列表現は難しいことがわかりました。
# Center of table
tableCenter: !!opencv-matrix
rows: 1
cols: 2
dt: f
data: [ 240, 240]
これはベクトルにマップする必要があります
240
240
float型で。私のコードは次のようになります:
#include "yaml.h"
#include <fstream>
#include <string>
struct Matrix {
int x;
};
void operator >> (const YAML::Node& node, Matrix& matrix) {
unsigned rows;
node["rows"] >> rows;
}
int main()
{
std::ifstream fin("monsters.yaml");
YAML::Parser parser(fin);
YAML::Node doc;
Matrix m;
doc["tableCenter"] >> m;
return 0;
}
しかし、私は得る
terminate called after throwing an instance of 'YAML::BadDereference'
what(): yaml-cpp: error at line 0, column 0: bad dereference
Abort trap
yaml-cpp のドキュメントをいくつか探しましたが、解析と出力に関する簡単な紹介例を除いて、何もないようです。残念ながら、この特定の状況では、これら 2 つのどちらも役に立ちません。
私が理解しているように、!! これがユーザー定義型であることを示していますが、yaml-cpp でそれを解析する方法がわかりません。