【问题标题】:Read any .jpg Image in a folder with OpenCV (C++) [closed]使用 OpenCV(C++)读取文件夹中的任何 .jpg 图像 [关闭]
【发布时间】:2017-02-01 08:25:19
【问题描述】:

我有一个包含一些图像的文件夹。我没有图像文件的名称。我正在使用带有 C++ 的 openCV。我想读取文件夹中的任何 .jpeg 图像,并在读取图像时将此图像的文件名作为字符串。是否可以?我可以为此使用imread 方法吗?

感谢您的帮助

【问题讨论】:

  • 是的,是的。我也不想这么说,但如果你用谷歌搜索“imread opencv”,第一个链接是关于如何打开图像的示例,第二个链接是“imread”文档。
  • 文件夹中有图片吗?你知道,它们是不同的东西
  • @CodeJam, i want to get the name as a string when i read 当你读到什么?一旦你有了图像文件的文件名(你可以用任何你喜欢的方式得到它,它与 opencv 无关),你只需将该文件名传递给imread。是否要打开 文件夹 中的所有图像?如果是这样,您应该在问题中说明这一点,因为现在无法猜测。
  • @CodeJam,您的问题中没有“文件夹”一词,您希望我们如何解读您的想法?

标签: c++ opencv opencv3.0


【解决方案1】:

如果您有权使用 boost:

boost::filesystem::directory_iterator itr(boost::filesystem::path("your_folder_path"));

for(itr; itr != boost::filesystem::directory_iterator(); ++itr)
{
    if(itr->path().extension().string() == ".jpg")
    {
        std::string imageFilename = itr->path().filename().string();
        imread(imageFilename);
    }
}

如果没有/不想使用boost,可以使用cv::glob获取目录下的文件列表:

vector<String> filenames;

// Get all jpg in the folder
cv::glob("your/folder/name/*.jpg", filenames);

for (size_t i=0; i<filenames.size(); i++)
{
    Mat im = imread(filenames[i]);
}

【讨论】:

  • 没有必要使用boost。你可以使用cv::glob
  • @Miki,我知道,但问题已被删除一段时间,我没有机会编辑我的答案
  • 当然,我只是指出这一点,以防万一。我会以重复的形式关闭,但在“文件夹”一词出现之前我已经投票了
  • 小编辑,你怎么不介意 ;)
  • @Miki,很好,谢谢,我不知道它支持通配符
猜你喜欢
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 2011-01-05
  • 1970-01-01
  • 2013-05-18
相关资源
最近更新 更多