0

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

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

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

2 回答 2

0

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

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

我的建议是,如果您真的希望从磁盘快速读取并立即使用(无需解析),我建议您将数据存储在二进制文件中。使用此类文件的优点是,您只需花时间读取文件,您不必解析这些文件。您可以立即从中读取 Cstruct或 C++ class

然而,不利的一面是,如果您确实将数据写入二进制文件,那么当您迁移到另一台机器(不同的架构)时,您可能会遇到一些非常恼人的错误,尤其是在字节序或可变长度int类型的情况下。但在我看来,这种情况很少见,因为大多数人无论如何都使用英特尔或英特尔兼容的处理器。

于 2013-02-27T11:20:03.897 回答
0

以Release模式运行程序,程序运行速度提高5倍。

于 2017-11-04T14:19:00.340 回答