C++ opencv批量修改图片大小

tech2025-09-16  15

在VS上运行代码:

#include <opencv2/core/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <io.h> using namespace cv; using namespace std; vector<string> files; String in_path = "./demo/trainB"; //要修改的文件夹 std::string out_path = "./demo/trainB1/"; //要保存图片文件夹 void getFiles(string path, vector<string>& files); int main(int argc, char** args) { Mat change_size; getFiles(in_path, files); for (int i = 0; i < files.size(); i++) { std::string out_path_end = out_path; cout << files[i].c_str() << endl; Mat image = imread(files[i].c_str(), IMREAD_COLOR); if (image.empty()) { cout << "could not find the image" << std::endl; _sleep(1000); return -1; } resize(image, change_size, Size(256, 256), 0, 0, INTER_LINEAR); out_path_end.append(to_string(i)); out_path_end.append(".jpg"); cout << out_path_end << std::endl; // _sleep(1000); imwrite(out_path_end, change_size); } //delete out_put_dir; //namedWindow("image", CV_WINDOW_AUTOSIZE); //imshow("image", change_size); waitKey(0); return 0; } void getFiles(string path, vector<string>& files) { //文件句柄 //long hFile = 0; //win7 intptr_t hFile = 0; //win10 //文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1) // "\\*"是指读取文件夹下的所有类型的文件,若想读取特定类型的文件,以png为例,则用“\\*.png” { do { //如果是目录,迭代之 //如果不是,加入列表 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) getFiles(p.assign(path).append("\\").append(fileinfo.name), files); } else { files.push_back(path + "\\" + fileinfo.name); } } while (_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }

 

最新回复(0)