OpenCV2类批量处理文件夹及文件图像 及批量处理后保存到txt文件


 1 //采用windows控制台实现计算文件夹中对象总数以及批量读取对象
 2 
 3 //#include <afx.h> //和windows.h是一样的作用
 4 #include <opencv2/opencv.hpp>
 5 #include <windows.h>
 6 
 7 using namespace cv;
 8 using namespace std;
 9 
10 int CBRelationship(string buffer);
11 
12 int main()
13 {
14     
15     int count = 1; //记录文件夹中对象数目
16 
17     WIN32_FIND_DATA p; //p是一个用于保存文件信息的结构体
18     HANDLE h = FindFirstFile("C:/Users/Administrator/Desktop/区分高架定位/*.jpg",&p);
19     cout<<p.cFileName<<endl;//打印被找到的第一个*.jpg的文件名
20     while(FindNextFile(h,&p)) //p不断后移,寻找下一个、下下一个*.jpg
21     {
22        cout<<p.cFileName<<endl;
23        count++;
24     }
25     cout<<"count="<<count<<endl;
26 
27     //依次自动的对每一幅图像进行相应处理
28     int i;//处理图像的序号
29     int result;//处理图像得到的结果
30     char buffer[200];
31     char imageDirectory[] = "C:/Users/Administrator/Desktop/区分高架定位";//存放图像的目录  
32     char imageFileType[] = "jpg";//图像类型
33 
34     FILE *fp=fopen("C:/Users/Administrator/Desktop/区分高架定位/result.txt","w");//打开并写入文件
35 
36     for ( i = 1;i <= count;i++)
37     {
38         
39         sprintf(buffer,"%s/%d.%s", imageDirectory,i, imageFileType);  //创建可变得图像路径buffer
40 
41         result = CBRelationship( buffer);//函数处理后返回值result
42         
43         fprintf(fp,"%d\t",result);//将result存入到文件中
44  
45     }
46 
47     fclose(fp);  //关闭文件
48     return 0;
49 }

  

 

2. 利用OpenCV类批量处理文件夹及文件图像并重命名

代码:

 1 #include <opencv2/opencv.hpp>
 2 #include <iostream>
 3 #include <vector>
 4 
 5 using namespace cv;
 6 using namespace std;
 7 
 8 int main()
 9 {
10     //用于存储训练的数据
11     cv::Directory TrainDir;//用于遍历路径下文件的类
12     string path1 = "E:/train/9";//训练样本所在文件夹 9为手动修改文件夹
13     string exten1 = "*.bmp";//训练样本的后缀名
14     bool addPath1 = true;//true;  //是true则函数返回文件绝对路径和文件名,是false则返回文件名
15 
16     vector<string> Train_pathnames = TrainDir.GetListFiles(path1, exten1, addPath1);//存储所有待训练样本的路径+文件名
17 
18     char image_name[20] = { 0 };
19     int digit_tag = path1[path1.size() - 1] - 48;
20 
21     //遍历目标文件夹,读入所有待训练样本,
22     for (int i = 0; i < Train_pathnames.size(); i++)
23     {
24         Mat Image = imread(Train_pathnames[i]);
25         sprintf_s(image_name, "E:/%d/%d-%d.bmp", digit_tag, digit_tag, i);//定义文件名 可变
26         imwrite(image_name, Image);
27     }
28     return 0;
29 }

 

posted on 2016-07-22 13:52  在某一天老去  阅读(1001)  评论(0编辑  收藏  举报

导航