/* 程序名:segmentation.c 功能:总程序:读入图像文件,分析特征,输出效果 */ //#include "stdafx.h" #include #include #include #include #include #include #include "Point.h" #include "FreeImage.h" //用于读gif的图像,(将gif图像转换为png) #include //下面的5个用于读取文件夹下的所有文件名 #include #include #include #include //用于弹出提示框,,,切记!当调用时,不要调用MFC!(Afx.h) #include using namespace std; #ifdef WIN32 //屏蔽VC6对STL的一些不完全支持造成 #pragma warning (disable: 4514 4786) #endif /*-----------各种声明-----------------------*/ void getFiles(string path, vector& files );//9、读取文件名下所有文件名 char* getType(char fileName[], char type[]); //2、获取图像类型 int* binary(IplImage* img,int bithro); //3、二值化图像 int getFolders(string path, vector& files );//11、读取文件名下所有文件夹的名称 int read_scanf(const string &filename,const int &cols,vector &_vector);//12、读取已经存好的特征值 int searchDir(char* path, vector &dir);//获取目录下一层的所有文件夹 IplImage* Cjbsb(IplImage* img,IplImage* imgjbsb,int jbwhite,int jbblack);//4、图像角标识别 IplImage* gif2ipl(const char* filename); //1、读取gif的外部函数 IplImage* singlefeature(char* path,int feature[ ][50],int flag);//10、得出单个文件的特征值 int pos_x=0,pos_y=0; bool pos_flag=false; IplImage* src; int picAll=0,picSus=0; int main() { time_t start ,end ;//计时 double cost; time(&start); //定义变量 //------------------------------------------------------// char path[100] = "D:\\xiangmu\\Img\\imgjiaobiao3\\"; vector dir; //存储目录 int conti=1; //对比图像的标号 int size_dir,num_dir; searchDir(path, dir);//获取filePath下的所有一级目录并存储到dir中 size_dir=dir.size(); //dir的大小就是学生的数量 //开始转换 //-------------------------------------------------------------// for(num_dir=0;num_dir files; //存储文件路径 getFiles(dir[num_dir].c_str(), files ); //遍历当前文件夹下的所有文件 //输出 printf("\n第%d,目录:%s",num_dir,dir[num_dir].c_str()); size = files.size(); //图像的数目 //输出 printf("\t个数:%d\t",size); //开始对每一张图片进行处理 //------------------------------------------------------// int flag=1; for (i = 0;i < size;i++) { memset(str,0,sizeof(str)); strcpy(str,files[i].c_str()); try { singlefeature(str,featx,flag);//str图片路径 featx:图片特征值,存在变量中featx中 }catch(int x) { } flag=0; } } return 0; }