zoukankan      html  css  js  c++  java
  • 【20160924】GOCVHelper MFC增强算法(1)

        //递归读取目录下全部文件(flag为r的时候递归)
        void getFiles(string pathvector<string>& files,string flag){
            //文件句柄
            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 && flag=="r")
                            getFilesp.assign(path).append("\").append(fileinfo.name), files,flag );
                    }
                    else{
                        files.push_back(p.assign(path).append("\").append(fileinfo.name) );
                    }
                }while(_findnext(hFile, &fileinfo)  == 0);
                _findclose(hFile);
            }

        }

        //递归读取目录下全部图片
        void getFiles(string pathvector<Mat>& files,string flag){
            vector<stringfileNames;
            getFiles(path,fileNames,flag);
            for (int i=0;i<fileNames.size();i++){
                Mat tmp = imread(fileNames[i]);
                if (tmp.rows>0)//如果是图片
                    files.push_back(tmp);
            }
        }  
        //递归读取目录下全部图片和名称
        void getFiles(string pathvector<pair<Mat,string>>& files,string flag){
            vector<stringfileNames;
            getFiles(path,fileNames,flag);
            for (int i=0;i<fileNames.size();i++){
                Mat tmp = imread(fileNames[i]);
                if (tmp.rows>0){
                    pair<Mat,stringapir;
                    apir.first = tmp;
                    apir.second = fileNames[i];
                    files.push_back(apir);
                }
            }
        }  
           在结合MFC的程序设计中,经常涉及到图片文件输入输出的情况。所以我编写集成了一些算法,在这个方面进行增强。getFiles函数能够递归地读取某个目录下面所有文件的据对路径。这样就能够一次性获得所有的图片;对getFiles进行重载,这样能够直接将图片读入mat,或者读入pair<Mat,string>,更加方便。
           可能你会问,既然已经读入Mat了,但是为什么还要读出pair<Mat,string>了?这是因为很多时候在获得图片的时候还需要获得图片的名称。
     
        ////删除目录下的全部文件
        void deleteFiles(string path,string flag){
            //文件句柄
            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 && flag=="r")
                            deleteFiles(p.assign(path).append("\").append(fileinfo.name).c_str(),flag );
                    }
                    else{
                        deleteFiles(p.assign(path).append("\").append(fileinfo.name).c_str());
                    }
                }while(_findnext(hFile, &fileinfo)  == 0);
                _findclose(hFile);
            }
        }
         删除目录下的全部文件。
     
     
     
     





  • 相关阅读:
    数30的小程序
    convert curl command into java HttpGet
    优秀技术文章转载备份 --- 变速原理
    用 c 调用 win-api 实现自动点击c# winform 程序 的按钮
    win 10 安装 glew 方法
    《想到什么更新什么系列》processing 性能优化
    processing 根据物体移动方向改变朝向
    openFrameworks 无法生成exe已经找不到dll的解决方案
    UE4 无法打开源文件“file_name.generated.h”(Cannot open source file name.generated.h)
    UE4 重新编译老版本的插件
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/5907500.html
Copyright © 2011-2022 走看看