【问题标题】:How to read the .mat file from Visual SFM in Python Code?如何在 Python 代码中从 Visual SFM 读取 .mat 文件?
【发布时间】:2020-07-09 12:50:43
【问题描述】:

有人可以帮助我使用 Python 代码来读取从 Visual SFM 生成的 .mat 文件吗?您可以从以下链接下载 .mat 文件:

https://github.com/cvlab-epfl/tf-lift/tree/master/example

您可以在链接中的 zip 中获得一个 .mat 文件,该文件就是我寻求帮助的文件。 它似乎是一个 ASCII 文件。我不知道如何读取文件中的数据。 我尝试使用 scipy.io.loadmat() 加载 .mat 文件中的数据,但出现错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
raise ValueError('Unknown mat file type, version %s, %s' % ret)
ValueError: Unknown mat file type, version 20, 0

有人可以帮我用 Python 代码加载文件中的数据吗?

感谢您的帮助和真诚的回复。

【问题讨论】:

  • 这看起来就像 Visual SFM 是什么,它没有正确保存数据。
  • 但是 Visual SFM 可以打开这些文件并处理数据。我需要用 Python3 读取这些文件中的数据,但不幸的是我卡了很长时间。
  • 如果视觉 SFM 可以将它们写得很糟糕,人们可能会怀疑它可以很好地阅读它们。似乎他们假设 mat 文件版本,这通常无法完成。但由于它只读/写一个,它不保存哪个版本。不过,其他读者需要知道哪个文件版本。

标签: python matlab scipy structure-from-motion


【解决方案1】:

如果您指的是这个 VisualSFM (http://ccwu.me/vsfm/doc.html),那么 .mat 文件不是 MATLAB .mat 文件,而是“匹配”文件。

来自网站:

[name].sift 存储所有检测到的 SIFT 特征,[name].mat 存储特征匹配。

似乎有用于读取此文件 (http://ccwu.me/vsfm/MatchFile.zip) 的 C++ 代码,您可以使用它来编写 Python 解析器。

另外,VSFM似乎有一个python套接字接口,它可以让你做你想做的事https://github.com/nrhine1/vsfm_util

【讨论】:

  • 嗯,Visual SFM 实际上是 (ccwu.me/vsfm/doc.html)。我会在接下来的几天里尝试你的提示。谢谢。
  • 我用 C++ 代码读取这个文件 (ccwu.me/vsfm/MatchFile.zip) 和 VisualSFM GUI 中的相关操作测试了你的提示,我得到了匹配信息。谢谢你。但是,我需要额外读取 .sift 文件中的数据以获取 SIFT 特征点描述信息。如何解决问题?
  • 网站上似乎有一些信息暗示了 .sift 的文件格式,所以也许你可以用它来编写解析器?这似乎是一种非常简单的二进制格式 - 在“使用您自己的特征检测器”部分中检查“选项 3”。
  • 请问,选项:SfM->Pairwise Matching->Export Feature Matches 和选项:SfM->Pairwise Matching->Export F-Matrix Matches 有什么区别。两者都可以将匹配结果输出为txt格式。我想知道他们是否有匹配结果的差异。
  • 直到现在,我发现在同一个图像对中:SfM->Pairwise Matching->Export Feature Matches 会比 SfM->Pairwise Matching->Export F-Matrix Matches 有更多的匹配计数。 VSFM 似乎从特征匹配到 F 矩阵匹配进行了选择。选择过程中发生了什么?
猜你喜欢
  • 2016-02-04
  • 2020-11-03
  • 2013-06-23
  • 2020-10-25
  • 2014-06-07
  • 2013-10-31
相关资源
最近更新 更多