日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

划分数据集代码(按照4:1的比例)以及根据各自文件名写入txt文件

發(fā)布時(shí)間:2023/12/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 划分数据集代码(按照4:1的比例)以及根据各自文件名写入txt文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

會(huì)將圖片分到兩個(gè)文件夾中:

#include <opencv2/opencv.hpp> #include "opencv2/features2d.hpp" #include <vector> #include <algorithm> #include <iostream> #include "windows.h" #include <stdio.h> #include <time.h> #include <math.h> #include <fstream> #include <fstream> #include <iostream> #include <filesystem> #include <vector> #include <ctime> #define WINDOW_NAME "【程序窗口】" using namespace cv;using namespace std;using std::ifstream; using std::ofstream; using std::cout; using std::endl; namespace fs = std::filesystem;int main() {cv::String path = "D:/一些文件/python code/AI/新數(shù)據(jù)集/歸一化數(shù)據(jù)集"; //待處理圖片文件夾地址cv::String dest_train = "D:/一些文件/python code/AI/新數(shù)據(jù)集/測(cè)試集"; //處理后圖片的保存地址cv::String dest_test = "D:/一些文件/python code/AI/新數(shù)據(jù)集/訓(xùn)練集"; //處理后圖片的保存地址cout << "獲取地址成功" << endl;cv::String savedfilename;std::vector<cv::String> filenames;int len = path.length();cv::Mat srcImg;cv::glob(path, filenames); //opencv里面用來(lái)讀取指定路徑下文件名的一個(gè)很好用的函數(shù) //初始化一個(gè)隨機(jī)vector,值為1的序號(hào)作為測(cè)試集,值為0的序號(hào)作為訓(xùn)練集srand((unsigned)time(NULL));vector<int> Test(filenames.size(), 0);for (int i = 0; i < Test.size() * 0.2; i++){int num = rand() % filenames.size();//如果已經(jīng)存在了,重新初始化一個(gè)numwhile (Test[num] == 1){num = rand() % Test.size();}//如果不存在的話Test[num] = 1;}//根據(jù)vector的值劃分?jǐn)?shù)據(jù)集for (int i = 0; i < filenames.size(); i++) {srcImg = cv::imread(filenames[i], 0);//*************************對(duì)圖片的處理部分***************************/if (Test[i] == 0){savedfilename = dest_train + filenames[i].substr(len);}else{savedfilename = dest_test + filenames[i].substr(len);}std::cout << savedfilename << std::endl;cv::imwrite(savedfilename, srcImg);cout << "第" << i << "張完成" << endl;}waitKey(0);return 0; }

然后生成兩個(gè)txt文件,分別寫入圖片名字。

#include <fstream>//ifstream讀文件,ofstream寫文件,fstream讀寫文件#include <string>//文本對(duì)象,儲(chǔ)存讀取的內(nèi)容 #include <iostream>//屏幕輸出cout #include <cstdlib>//調(diào)用system("pause"); #include <windows.h>//用于函數(shù)SetConsoleOutputCP(65001);更改cmd編碼為utf8 using namespace std;int main() {SetConsoleOutputCP(65001);ifstream in("D:/一些文件/python code/AI/新數(shù)據(jù)集/name.txt");ofstream out_test; //("D:/一些文件/python code/AI/新數(shù)據(jù)集/test.txt");ofstream out_train; //("D:/一些文件/python code/AI/新數(shù)據(jù)集/train.txt");string line;cv::String path_train = "D:/一些文件/python code/AI/新數(shù)據(jù)集/測(cè)試集"; //處理后圖片的保存地址cv::String path_test = "D:/一些文件/python code/AI/新數(shù)據(jù)集/訓(xùn)練集"; //處理后圖片的保存地址std::vector<cv::String> filenames_train;std::vector<cv::String> filenames_test;int len_train = path_train.length();int len_test = path_test.length();cv::Mat srcImg;cv::glob(path_train, filenames_train); cv::glob(path_test, filenames_test);if (in) // 有該文件{while (getline(in, line)) // line中不包括每行的換行符{cout << line << endl;string NameOfPic = "";//讀到這一行后,對(duì)這一行的字符串進(jìn)行分割,從而得到文件名for (int i = 2; i < line.size(); i++){if (line[i - 2] == ' ' && line[i - 1] == ' ' && line[i] == ' '){NameOfPic.assign(line, 0, i-2);break;}}cout << NameOfPic << endl;int flag = 0;//在測(cè)試集圖片文件夾中尋找,是否能找到一樣的名字的文件for (int i = 0; i < filenames_test.size(); i++) {string path = path_test;path = path + '\\' + NameOfPic;if (path == filenames_test[i]){flag = 1;//追加寫入out_test.open("D:/一些文件/python code/AI/新數(shù)據(jù)集/test.txt", ios::out | ios::app);out_test << line << endl;out_test.close();break;}}//如果在測(cè)試集中沒(méi)有找到,說(shuō)明在訓(xùn)練集中if (flag == 0){for (int i = 0; i < filenames_train.size(); i++){string path = path_train;path = path + '\\' + NameOfPic;if (path == filenames_train[i]){//追加寫入out_train.open("D:/一些文件/python code/AI/新數(shù)據(jù)集/train.txt", ios::out | ios::app);out_train << line << endl;out_train.close();break;}}}}}else // 沒(méi)有該文件{cout << "no such file" << endl;}system("pause");return 0;}

總結(jié)

以上是生活随笔為你收集整理的划分数据集代码(按照4:1的比例)以及根据各自文件名写入txt文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。