在Opencv中加载YML文件 - 优化

时间:2013-02-27 11:08:50

标签: c++ c optimization opencv

我正在加载一个“160470 * 199”点的yml文件。它在我的机器上花了一分多钟。我怎样才能快速完成?

我使用以下代码加载yml文件。

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

2 个答案:

答案 0 :(得分:0)

您可以假设在FileStorage类OpenCV中读取的文件已经针对性能进行了充分调整。

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

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

然而,缺点是如果你把数据写入二进制文件,当你迁移到另一台机器(不同的架构)时,你可能会面临一些非常恼人的错误,特别是对于字节序,或者甚至可能是{{ 1}}类型。但在我看来,这种情况很少见,因为大多数人都使用英特尔或英特尔兼容的处理器。

答案 1 :(得分:0)

在发布模式下运行程序。它会将程序的速度提高5倍。