【发布时间】:2013-05-07 10:28:36
【问题描述】:
我正在使用 OpenCV FileStorage 将地图存储在 yaml 文件中,如下所示:
cv::FileStorage fs("file.yaml.gz", cv::FileStorage::WRITE);
std::string somekey = ...;
double someval = ...;
fs << "mymap" << "{:" << somekey << someval << "}";
现在,我想取回数据,但我不知道地图的键。我猜代码应该是这样的:
cv::FileStorage fs("file.yaml.gz", cv::FileStorage::READ);
cv::FileNode fn = fs["mymap"];
// fn has type == cv::FileNode::MAP
// fn has size == 1 element (one pair)
// fn[0] returns also a MAP with 1 element
是否可以在没有密钥的情况下获得该地图的所有对?我检查了cv::FileNodeIterator,但它似乎并没有解决这个问题。 C 接口CvFileNode 允许在提供密钥之后检索值。
【问题讨论】:
-
你应该看看使用
FileNodeIterator。我不准备写一个完整的答案,但是当您遍历fn中的每个FileNode mapFn时,我希望mapFn.isNamed()是true,而mapFn.name()给出实际名称。虽然我还没有尝试过,但我很确定这些方面的东西应该适合你。 -
感谢@SchighSchagh 的提示,你是对的。
标签: c++ opencv file-storage