COPY FROM:http://blog.csdn.net/watkinsong/article/details/9227439
在做图像处理的时候,可能进行一个文件夹的所有文件的遍历。
有一种比较笨的方式是使用c 的文件夹遍历方式,但是代码太难理解,而且如果在windows中使用还需要使用wchar_t宽字符。
opencv本身就有目录遍历的类库,非常方便,我以前还一直傻傻的使用c的方式进行遍历。
示例代码:非常简单的操作
需要特别注意的是:代码19行,vector<string> fileNames = dir.GetListFiles(dir_path, "*.jpg", false); 中的vector<string>其实是vector<cv::String>。而且这个函数在使用时需要contrib头文件和相关lib
- // OpencvDirTraverse.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include "iostream"
- #include "stdio.h"
- #include "opencv\cv.h"
- #include "opencv\highgui.h"
- #include <opencv2\opencv.hpp>
- using namespace std;
- using namespace cv;
- int _tmain(int argc, _TCHAR* argv[])
- {
- string dir_path = "D:/images/all_0407/";
- Directory dir;
- vector<string> fileNames = dir.GetListFiles(dir_path, "*.jpg", false);
- for(int i=0; i < fileNames.size(); i++)
- {
- string fileName = fileNames[i];
- string fileFullName = dir_path + fileName;
- cout<<"file name:"<<fileName<<endl;
- cout<<"file paht:"<<fileFullName<<endl;
- }
- system("pause");
- return 0;
- }