YAML兼容性问题

时间:2015-08-07 11:02:11

标签: matlab opencv yaml

对于我的项目,我使用OpenCV创建了10,000个YAML个文件。然后我必须在MATLAB中读取这10,000个文件,所以我使用了YAMLMATLAB。 OpenCV创建的文件在每个文件的开头放置以下代码。

%YAML:1.0

不幸的是,YAMLMATLAB不理解%YAML:1.0。有人建议我重建YAMLMATLAB即SnakeYaml Java库。是否还有其他方法可以使其发挥作用。

1 个答案:

答案 0 :(得分:0)

%引入了一个指令,%YAML directive后面应该有一个空格来结束名称,如果它是一个可识别的指令(只有两个: %TAG%YAML。这实际上是一个未知的指令,其值%YAML:1.1没有任何参数。

MatLab(例如PyYAML)拒绝加载这样的文件,IMO行为不正确,正如YAML规范对ignore unknown directives说的那样。当然,OpenCV也提供了错误的指令并不好。

忽略错误的指令是ruamel.yaml的作用(免责声明:我是该程序包的作者)。如果您安装并以往返模式运行其实用程序yaml

yaml rt --save *.yaml

格式的文件:

%YAML:1.0
---
abc: def
klm: ghi

转换为:

abc: def
klm: ghi

应该可以在MatLab中加载。

确保在运行命令之前备份文件,因为--save将文件保存到位(即覆盖原始文件)。

如果您不想安装ruamel.yaml,您当然也可以使用其他一些命令行工具来删除前两行(指令和文档分隔符)。