【问题标题】:Benchmarking on the 2006 Middlebury Stereo Dataset2006 年 Middlebury 立体数据集的基准测试
【发布时间】:2019-02-18 02:13:21
【问题描述】:

我的问题如下: 我开发了一种超像素分割算法,我想测试超像素在立体图像中的表现。为此,我使用 Middlebury Stereo Dataset 2006 (http://vision.middlebury.edu/stereo/data/scenes2006/),现在我加载一对图像对它们进行分割,然后在其上计算我的指标(基本上是一个花哨的 IOU)。这现在可以正常工作,现在我想扩展它,它不仅使用一对立体图像,而且使用整个数据集。

编程语言是 C++。

问题出在这里: 我将如何有效地加载所有图像?因为这些对都在独立的文件夹中(文件夹的结构见下文)。

我的想法是有一个文件夹路径列表,然后从一个文件夹中导入所有图像,计算所有内容,然后加载下一个文件夹。 我该怎么做?

每个立体声对的结构是这样的:

Folder with the name of the item (like cat, wood, baby, ...)
    disp1.png
    disp5.png
    view1.png
    view5.png

现在在我的程序开始时,我会像这样加载图像:

String pathImageLeft = "/Users/Stereo/Left/view1.png";
String pathImageRight = "/Users/Stereo/Right/view5.png";
String pathDisparityLeft = "/Users/Stereo/DisparityMap/disp1.png";
String pathDisparityRight = "/Users/Stereo/DisparityMap/disp5.png";

感谢您的想法。

【问题讨论】:

  • 您的问题是关于访问目录还是访问 URL?写完答案后,我不太确定了。 (因此,将其视为初步的。)
  • 是作为目录访问的,我都是手动下载的,谢谢你的回答!

标签: c++ computer-vision


【解决方案1】:

如果我理解OP的问题正确,它可以简化为

如何访问目录?

从 C++17 开始,有一个 Filesystem libary 可用,它以可移植的方式提供对目录的访问。

也就是说,它提供了一个std::filesystem::directory_entry

代表一个目录条目。该对象将路径存储为成员,还可以在目录迭代期间存储其他文件属性(硬链接计数、状态、符号链接状态文件大小和上次写入时间)。

还有一个std::filesystem::directory_iterator

遍历目录的 directory_entry 元素(但不访问子目录)。迭代顺序是未指定的,除了每个目录条目只被访问一次。跳过特殊路径名 dot 和 dot-dot。

提供的链接提供了示例代码。

在 C++17 之前,您要么必须使用 boost::filesystem(它实际上是 std::filesystem 的锚),要么必须使用通常具有有限可移植性的操作系统特定功能。

关于后者,SO 中已经存在问题:

仅列出几个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2017-05-25
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多