OpenCV 应用读取文件路径与文件名批量处理图片

来源:互联网 发布:怎么解除淘宝微淘屏蔽 编辑:程序博客网 时间:2024/06/13 10:09

在应用opencv大量测试图片时,需要对图片批量的读入并进行处理。之前处理这个问题时是使用这种方法:把待处理的图片放到一个文件夹内,全选它们然后重命名1,这样系统会自动给他们全部重命名为1(1),1(2),1(3)等等等
然后用下面的代码把图片读进来:

for ( i=1;i<=624;i++)    {    sprintf_s(adr, "C:\Users\Administrator\Desktop\第二组截图\1 (%d).jpg",i);    Mat g_SrcImage;    g_SrcImage=imread(adr);    printf("i=%d",i);    }

这种方法很麻烦,需要手动重命名一遍,然后根据文件夹下的图片个数确定循环中的值。
最近找到了一个简单一点的方法,遍历文件夹内所有图片的路径,名称和总个数。通用性好一点。

using namespace std;using namespace cv; Mat g_SrcImage;int main(){    void getFiles( string path, vector<string>& files);    char * filePath = "D:\images";      vector<string> files;      getFiles(filePath, files );      int number = files.size();      printf("图片个数为%d\n",number);    for (int i = 0;i < number;i++)      {          cout<<files[i].c_str()<<endl;          g_SrcImage=imread(files[i].c_str());        imshow("11",g_SrcImage);        waitKey(500);    }      getchar();}void getFiles( string path, vector<string>& files )  {      long   hFile   =   0;      struct _finddata_t fileinfo;      string p;      if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) !=  -1)      {          do          {              if((fileinfo.attrib &  _A_SUBDIR))              {                  if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)                      getFiles( p.assign(path).append("\\").append(fileinfo.name), files );              }              else              {                  files.push_back(p.assign(path).append("\\").append(fileinfo.name) );              }          }while(_findnext(hFile, &fileinfo)  == 0);          _findclose(hFile);      }  } 
2 0
原创粉丝点击