我正在加载一个yml文件,它有"160470 * 199“点。在我的机器里花了一分钟多的时间。我怎么才能让它更快呢?
我使用下面的代码加载了一个yml文件。
Mat sd;
string Fsd = "//home//Desktop//YML//sd.yml";
FileStorage fsDemo1( Fsd, FileStorage::READ);
fsDemo1["sd"] >> sd;发布于 2013-02-27 19:20:04
您可以假定在OpenCV的FileStorage类中读取的文件已经针对性能进行了充分的调优。
你更应该担心的是,你真的需要FileStorage的好处吗?使用这种方法的缺点是,将在大文件上运行完整语法的YAML/XML解析器。在我看来,这将比从磁盘实际读取文件所需的时间慢得多。
我的建议是,如果你真的想从磁盘中快速读取并立即使用(不需要解析),我建议你将数据存储在二进制文件中。使用这种文件的好处是,唯一花费的时间是读取文件,而不是解析这些文件。您可以直接从中读取C struct或C++ class。
然而,缺点是,如果您确实将数据写入二进制文件,当您迁移到另一台机器(不同的体系结构)时,您可能会遇到一些真正令人恼火的错误,特别是使用字节顺序,甚至可能是可变长度的int类型。但在我看来,这将是罕见的,因为大多数人使用英特尔或英特尔兼容的处理器。
发布于 2017-11-04 22:19:00
在Release mode.It中运行程序将使程序速度提高5倍。
https://stackoverflow.com/questions/15110542
复制相似问题