在Opencv - Optimization中加载YML文件

loading a YML file in Opencv - Optimization

本文关键字:加载 YML 文件 Optimization Opencv      更新时间:2023-10-16

我正在加载一个具有"160470 * 199"点的yml文件。我的机器花了一分钟多的时间。我怎样才能快一点呢?

我使用下面的代码加载一个yml文件。

 Mat sd;
 string Fsd  = "//home//Desktop//YML//sd.yml";
 FileStorage fsDemo1( Fsd, FileStorage::READ);
 fsDemo1["sd"] >> sd;

您可以假设在OpenCV的FileStorage类中读取的文件已经足够好地调整了性能。

你应该更担心的是,你真的需要FileStorage的精细吗?使用此方法的缺点是将在大文件上运行完整的语法YAML/XML解析器。在我看来,这将比实际从磁盘读取文件所花费的时间要慢得多。

我的建议是,如果你真的在寻找快速读取磁盘并立即使用(不需要解析),我建议你将数据存储在二进制文件中。使用这样的文件的好处是,唯一的时间花在读取文件上,您不必解析这些文件。你可以直接从中读取C struct或c++ class

然而,缺点是如果您确实将数据写入二进制文件,那么当您迁移到另一台机器(不同的体系结构)时,您可能会面临一些非常恼人的错误,特别是对于端序,或者甚至是int类型的可变长度。但在我看来,这将是罕见的,因为大多数人使用英特尔或英特尔兼容的处理器。

以发布模式运行程序。