图像训练时文件夹批量测试
2023-09-14 09:14:39 时间
智能型操作方法:
方法一:
1.批量生成文件目录
如果你有n个文件夹目录,每个目录下有一定数据集
在此目录下新建list.txt文件,打开输入
//在txt文件中输入
dir *.* /b >list.txt
然后另存为list.bat文件,双击.bat文件,打开txt会生成相应文件夹目录
2.文件读取
路径读取
int readlist(string in_list,vector<string>&result)
{
ifstream in_file(in_list);
if(!in_file.is_open())
{
cout<<"file read error"<<endl;
return -1;
}
string temp;
while(getline(in_file,temp)
{
results.push_back(temp);
}
return 0;
}
//引用
vector<string>file_vec;
string in_list="D:\\project\\test\\list.txt";
read_list(in_list,file_vec);
file_vec中存放的将是文件夹名称组成的集合,如上图txt中所示
读取图像
图像名字按照n*n矩阵s型排列命名
//图像格式如:0_0_0.tiff 1_0_1.tiff
string in_dir0="D:\\project\\test\\";
int m=5;
int n=5;
for(string line:file_vec)
{
string in_dir=in_dir0+line+"\\";
//表示图像名称后两个数字
int curr_m=0; //行
int curr_n=0; //列
int d=1;
Point curr_direction(0,1);
for(int i=0;i<18;i++)
{
string name=to_string(i)+"_"+to_string(curr_m)+"_"+to_string(curr_n)+"tiff";
string imgpath=in_dir+name;
cout<<imgpath<<endl;
ifstream f(imgpath.c_str());
if(!f.good())
{
break;
}
Mat src=imread(imgpath);
//下一张图
if(d>0)
{
if(curr_n<n-1)
{
curr_n+=d;
curr_direction=Point(1,0);
}
else{
d=-d;
curr_m+=1;
curr_direction=Point(0,1);
}
}
else{
if(curr_n>0)
{
curr_n+=d;
curr_direction=Point(-1,0);
}
else{
curr_m+=1;
d=-d;
curr+direction=Point(0,1);
}
}
}
}
方法二:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>
int main() {
cv::String path = "E:/Data Sets/ORIGINAL/data_road_fisheye/training/label/"; //待处理图片文件夹地址
cv::String dest = "E:/Data Sets/ORIGINAL/data_road_fisheye/training/greylabel/"; //处理后图片的保存地址
cv::String savedfilename;
std::vector<cv::String> filenames;
cv::Mat srcImg, dstImg;
cv::glob(path, filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数
for (int i = 0; i < filenames.size(); i++) {
srcImg = cv::imread(filenames[i]);
cv::cvtColor(srcImg, dstImg, CV_RGB2GRAY);
savedfilename = dest + filenames[i].substr(55);
std::cout << savedfilename << std::endl;
cv::imwrite(savedfilename, dstImg);
}
return 0;
}
补充:读取txt文件进行批处理:
#include<fstream>
#include<string>
using namespace std;
using namespace cv;
string path= "F:\\...\\";
string save_path= "F:\\...\\";
int main()
{
string txt_path = "F:\\abc.txt";
ifstream sample;
sample.open(txt_path.data());
assert(sample.is_open());
vector<string>imgnames;
string imgname;
int i = 0;
while (getline(sample, imgname))
{
imgnames.push_back(imgname);
//cout << imgname << endl;
Mat src, dst;
src = imread(imgname);
Gamma_(src, dst, 128);
string savename = save_path + to_string(i) + ".tiff";
cout << savename << endl;
imwrite(savename, dst);
i++;
}
}
beautiful!
相关文章
- keras多gpu训练
- Java实现 蓝桥杯 算法训练 纪念品分组
- Java实现 蓝桥杯VIP 算法训练 单词接龙
- Java实现 蓝桥杯VIP 算法训练 数位分离
- Java实现 蓝桥杯VIP 算法训练 和为T
- Java实现 蓝桥杯VIP 算法训练 寂寞的数
- Java实现 蓝桥杯VIP 算法训练 判断字符位置
- Java实现 蓝桥杯 算法训练 最大最小公倍数
- keras系列︱图像多分类训练与利用bottleneck features进行微调(三)
- DL之DNN:利用DNN算法对mnist手写数字图片识别数据集(sklearn自带,1797*64)训练、预测(95%)
- DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-42 算法训练 送分啦
- TensorFlowX.Y核心基础与AI模型设计08:高级tf.Estimator 二元分类、模型训练与预测
- GAN中train与eval训练
- 模型实战(2)之YOLOv5 实时实例分割+训练自己数据集
- 深度学习3 迁移学习分批次保存特征并训练全连接
- Pytorch模型训练实用教程学习笔记:一、数据加载和transforms方法总结