使用 OpenCV(C++)读取文件夹中的任何 .jpg 图像 [关闭]
Posted
技术标签:
【中文标题】使用 OpenCV(C++)读取文件夹中的任何 .jpg 图像 [关闭]【英文标题】:Read any .jpg Image in a folder with OpenCV (C++) [closed] 【发布时间】:2017-02-01 08:25:19 【问题描述】:我有一个包含一些图像的文件夹。我没有图像文件的名称。我正在使用带有 C++ 的 openCV。我想读取文件夹中的任何 .jpeg 图像,并在读取图像时将此图像的文件名作为字符串。是否可以?我可以为此使用imread
方法吗?
感谢您的帮助
【问题讨论】:
是的,是的。我也不想这么说,但如果你用谷歌搜索“imread opencv”,第一个链接是关于如何打开图像的示例,第二个链接是“imread”文档。 Can not read image in opencv的可能重复 文件夹中有图片吗?你知道,它们是不同的东西 @CodeJam,i want to get the name as a string when i read
当你读到什么?一旦你有了图像文件的文件名(你可以用任何你喜欢的方式得到它,它与 opencv 无关),你只需将该文件名传递给imread
。是否要打开 文件夹 中的所有图像?如果是这样,您应该在问题中说明这一点,因为现在无法猜测。
@CodeJam,您的问题中没有“文件夹”一词,您希望我们如何解读您的想法?
【参考方案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,很好,谢谢,我不知道它支持通配符以上是关于使用 OpenCV(C++)读取文件夹中的任何 .jpg 图像 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
C++ + OpenCV = 访问冲突读取位置 0x02176000
在matlab中调用时无法在C++中使用opencv读取图像