1.Qt5(Qt Creator)中配置OpenCV3
// 添加include路径
INCLUDEPATH += $$quote(D:\Program Files\opencv\build\include\opencv) \
$$quote(D:\Program Files\opencv\build\include\opencv2) \
$$quote(D:\Program Files\opencv\build\include)
// 添加lib路径
LIBS += $$quote(D:\Program Files\opencv\build\x64\vc14\lib\opencv_world340d.lib)
其中,当路径中有空格时可以使用 `$$quote()` 包裹起来
- 需要
qDebug()
显示输出信息在控制台时,可以在 .pro 文件中加入
CONFIG += console c++11
2.Windows/Linux通用的方法遍历一个目录下的所有文件
void listFileInDir(const char *dir, std::vector<char *> &fileList) {
char dirNew[200];
strcpy(dirNew, dir);
strcat(dirNew, "\\*.*"); // 在目录后加上"\\*"
intptr_t handle; // 文件句柄
_finddata_t findData; // _finddata_t结构用来记录查找到的文件的信息
handle = _findfirst(dirNew, &findData); // 查找目录的第一个文件
if (handle == -1) {
return ;
}
do {
if (findData.attrib & _A_SUBDIR) {
// 目录
if (strcmp(findData.name, ".") == 0 || strcmp(findData.name, "..") == 0) {
// 目录为.或..(Linux下)
continue ;
}
// 往下搜索
strcpy(dirNew, dir);
strcat(dirNew, "\\");
strcat(dirNew, findData.name);
listFileInDir(dirNew, fileList);
} else {
// 文件
fileList.push_back(findData.name);
}
} while(_findnext(handle, &findData) == 0); // 查找下一个
_findclose(handle); // 关闭搜索句柄
}
void getFiles(const std::string & path, std::vector<std::string> & files) {
//文件句柄
long hFile = 0;
//文件信息,_finddata_t需要io.h头文件
struct _finddata_t fileinfo;
std::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);
}