【问题标题】:How to read files in sequence from a directory in OpenCV?如何从 OpenCV 中的目录中按顺序读取文件?
【发布时间】:2014-12-19 13:38:04
【问题描述】:

我是OpenCV 的新手。我想读取目录中的 XML 文件。我正在使用 FindFirstFile,但我不知道如何获取文件名以进一步作为 cvLoad 的输入。这是我正在使用的代码:

HANDLE hFind;
WIN32_FIND_DATA FindFileData;
wchar_t* file = L"D:\\zainb_s\\M.phil\\thesis\\dataset\\dataset_3\\RGB_3\\RGB\\s01_e01-   Copy\\1_walking\\depth\\*.xml";
hFind = FindFirstFile(file, &FindFileData);
cout << FindFileData.cFileName[0];
FindClose(hFind);

我想将文件名放在一个数组中以进一步读取文件以进行处理。

【问题讨论】:

  • 所以您的问题是关于检测文件夹中的文件?可以使用 Qt 或 boost 之类的附加库吗?
  • 是的。我想访问文件夹中的文件,想一一访问它们的名称以加载以进行进一步处理。我将如何使用这些库?我帮助我对 Opencv 和 C 很陌生

标签: c++ opencv


【解决方案1】:

如果您使用的是最新版本的 OpenCV,最好避免使用特定于操作系统的方法:

vector<string> fn; // std::string in opencv2.4, but cv::String in 3.0
string path = "e:/code/vlc/faces2/*.png";
cv::glob(path,fn,false);
// Now you got a list of filenames in fn.

(哦,再一次,避免不推荐使用的 C-API 函数,如 cvLoad 像地狱一样,拜托!!)

【讨论】:

  • 哇。它工作得很好。非常感谢,你这么快就解决了我的问题。
  • 太好了,还不知道 glob!
  • @berak cvLoad 是我为我的数据集获得的解决方案,经过多次尝试后它工作正常。我需要将它用于我的数据集。你能帮我做一件事吗?这段代码运行良好,但您必须知道 cvLoad 需要一个 const char * 但这段代码给出的是字符串。你能帮我解决这个问题吗?非常感谢。我非常希望我的问题能在这里得到解决。
  • 每个字符串都有一个 c_str();返回 const char* 的成员。
  • 嘿@berak 它对我有用。谢谢。你能指导我做一件事吗?当我使用 IplImage* depth=(IplImage*)cvLoad("depthImg190.xml");它工作正常。但是当我使用 IplImage* depth=(IplImage*)cvLoad(filename);其中文件名 = "D:\\zainb_s\\M.phil\\thesis\\dataset\\dataset_3\\RGB_3\\RGB\\s01_e01-Copy\\1_walking\\depth\\depthImg190.xml" cvLoad 没有给出我很好的结果。它不能很好地读取参数。你能在这里指导我以及这种行为的原因吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多