我正在加载一个“160470 * 199”点的yml文件。它在我的机器上花了一分多钟。我怎样才能快速完成?
我使用以下代码加载yml文件。
Mat sd;
string Fsd = "//home//Desktop//YML//sd.yml";
FileStorage fsDemo1( Fsd, FileStorage::READ);
fsDemo1["sd"] >> sd;
答案 0 :(得分:0)
您可以假设在FileStorage
类OpenCV中读取的文件已经针对性能进行了充分调整。
你应该更担心的是,你真的需要FileStorage
的细节。使用此方法的缺点是将在您的大文件上运行完整的语法YAML
/ XML
解析器。在我看来,这比从磁盘实际读取文件所花费的时间要慢得多。
我的建议是,如果你真的想要从磁盘快速读取并立即使用(不需要解析),我建议你将数据存储在二进制文件中。使用这些文件的好处是,唯一花费的时间是读取文件,您不必解析这些文件。您可以立即从中读取C struct
或C ++ class
。
然而,缺点是如果你把数据写入二进制文件,当你迁移到另一台机器(不同的架构)时,你可能会面临一些非常恼人的错误,特别是对于字节序,或者甚至可能是{{ 1}}类型。但在我看来,这种情况很少见,因为大多数人都使用英特尔或英特尔兼容的处理器。
答案 1 :(得分:0)
在发布模式下运行程序。它会将程序的速度提高5倍。