如何在 OpenCV 中编辑/更新 YAML 文件?

Posted

技术标签:

【中文标题】如何在 OpenCV 中编辑/更新 YAML 文件?【英文标题】:How to edit / update YAML file in OpenCV? 【发布时间】:2012-07-08 23:16:57 【问题描述】:

在 OpenCV 中编辑/更新 YAML/YML 文件的最佳方法是什么?

【问题讨论】:

使用 YAML 库?我觉得yaml-cpp还不错。 如何处理/读取 YAML 文件与 OpenCV 无关,而与您的编程语言有关。当您使用 c++ 时,我同意@Linuxios 关于 yaml-cpp @Linuxios 和 diip_thomas OpenCV FileStorage 的优点是您可以对 XML 和 YAML 使用相同的代码,因此如果可能的话,我想坚持使用 OpenCV! 【参考方案1】:

YAML 中一般不支持直接更新,因为它需要重写更新节点下的整个文件,因此 OpenCV 以及 yaml-cpp 中的原因不支持直接编辑节点值。因此,解决方法是再次重新创建/编写 YAML 结构。

【讨论】:

【参考方案2】:

看起来 OpenCV 有一些原生的方式来读写 YAML。从this SO answer,我找到了以下 OpenCV C++ 接口的“备忘单”:

https://code.ros.org/trac/opencv/export/3163/trunk/opencv/doc/opencv_cheatsheet.pdf

他们编写 YAML 的一部分示例:

FileStorage fs("test.yml", FileStorage::WRITE);
fs << "i" << 5 << "r" << 3.1 << "str" << "ABCDEFGH";

如果您有兴趣更新现有 YAML 文件,最好的方法是将现有文件读入您​​自己的数据类型,进行更改,然后将新数据写入文件。

【讨论】:

我正在寻找编辑,即更新键值,如果它们已经存在,但 FileStorage::WRITE 只是在文件末尾添加东西:(

以上是关于如何在 OpenCV 中编辑/更新 YAML 文件?的主要内容,如果未能解决你的问题,请参考以下文章

C++ YAML:如何编辑/写入 .yaml 文件中的节点

Node.js写入YAML文件

如何使用 Pipeline Utility Steps 插件更新现有 yaml 文件的内容

我想加载一个 YAML 文件,可能编辑数据,然后再次转储。如何保留格式?

尝试使用 yaml-cpp 解析 OpenCV YAML 输出

OpenCV:将 YAML 文件读入 CvMat 结构