C++ opencv 遍历文件夹下所有图片

简介:常常遇到大批量的图片测试,但是c++的语法里面好像没有专门的遍历文件的方法,之前常用套路是用python把所有需要的图片路径写在一个TXT文本中用C++读取。现在发现opencv有现成的遍历图片的方法cv::glob()。

  1. 函数原型:
void glob(
      cv::String pattem,
      std::vector &result,
      bool recursive = false
)

  1. 参数详解:
  • cv::String pattem:搜索路径
  • std::vector &result: 存储所有图片绝对路径
  • bool recursive = false :是否递归遍历,默认是false,如果改为true的话可以递归遍历子文件夹下的所有图片

注:在pattem参数处用cv::String 和std::string都可以,但是result处用std::string会报错。

  1. 实例:
    文件结构如下


    文件结构.png
  • 代码:
#include 

int getImagePathList(std::string folder, std::vector &imagePathList);

int getImagePathList(std::string folder, std::vector &imagePathList)
{
    //search all the image in a folder
    cv::glob(folder,imagePathList);
    return 0;
}

int main()
{
    //std::string folder = "F:\\imagedata\\miniLed\\clip\\1";
    cv::String folder = "F:\\imagedata\\miniLed\\templateMatch";
    std::vector imagePathList;
    getImagePathList(folder,imagePathList);
    for (int i = 0; i < imagePathList.size(); i++)
    {
        std::cout << imagePathList[i] << "\n";
        auto img = cv::imread(imagePathList[i]);
        cv::imshow("roi", img);
        cv::waitKey(0);
    }
}
  • 输出:
F:\imagedata\miniLed\templateMatch\src1.png
F:\imagedata\miniLed\templateMatch\src2.png
F:\imagedata\miniLed\templateMatch\src3.png
F:\imagedata\miniLed\templateMatch\src4.png

你可能感兴趣的:(C++ opencv 遍历文件夹下所有图片)