我有一系列 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 的文档,但似乎没有任何文档,除了一个关于解析和发射的简短介绍性示例。不幸的是,在这种特殊情况下,这两者都没有帮助。
据我了解,!!表明这是一个用户定义的类型,但我没有看到 yaml-cpp 如何解析它。