Visual studio + opencv**
//文件夹下图像的批量读取 //图像批量处理并保存 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include <fstream> using namespace std; using namespace cv; int main(int argc, char** argv) { cv::String path = "D:\\C++Project\\Image\\image_Test02\\"; //待处理图片文件夹地 String savedfilename; vector<cv::String> filenames; Mat srcImg, dstImg; glob(path, filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数 char ad[55] = { 0 }; int dx = 0; for (int i = 0; i < filenames.size(); i++) { srcImg = cv::imread(filenames[i]); std::cout << filenames[i] << std::endl; std::cout << "小鬼" << std::endl; //图像处理算法 cvtColor(srcImg, dstImg, COLOR_BGR2GRAY); //保存位置 sprintf_s(ad, "D:\\C++Project\\Image\\image_Test02\\Test_02\\test%d.jpg", ++dx); //保存 cv::imwrite(ad, dstImg); } waitKey(0); return 0; }运行结果:
visual Studio2017 + opencv + window系统函数
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <stdio.h> #include <windows.h> using namespace std; void readImgNamefromFile(char* fileName, vector<string> &imgNames) { //vector 清零 参数设置 imgNames.clear(); WIN32_FIND_DATA file; int i = 0; char tempFilePath[MAX_PATH + 1]; char tempFileName[100]; //转换输入文件名 sprintf_s(tempFilePath, "%s/*", fileName); //查找待操作的文件的相关属性, 读取到WIN32_FIND_DATA; HANDLE handle = FindFirstFile(tempFilePath, &file); if (handle != INVALID_HANDLE_VALUE) { FindNextFile(handle, &file); //FindNextFile(handle, &file); //循环遍历得到文件夹的所有文件名 do { sprintf_s(tempFileName, "%s", fileName); imgNames.push_back(file.cFileName); imgNames[i].insert(0, tempFileName); i++; } while (FindNextFile(handle, &file)); } FindClose(handle); } int main(int argc, char ** argv) { //设置读入图像序列的文件夹路径 char* fileName = "D:\\C++Project\\Image\\image_Test02\\"; std::vector <string> imgNames; //获取对应文件夹下的所有文件 readImgNamefromFile(fileName, imgNames); for (int i = 1; i < imgNames.size(); i++) { cv::Mat img = cv::imread(imgNames[i]); if (!img.data) return -1; cout << imgNames[i] << endl; cout << "小棍" << endl; } cv::waitKey(0); return 0; }注意: 1、项目属性中:配置属性——》常规——》字符集——》使用对字节字符集 2、项目属性——》C/C++——》语言——》符合模式改为否
运行结果: 总结: 1、第一种方法代码少
2、运行速度没有比较