opencv2.x版本可以使用Directory获取文件中的图像名,批量读入图像,在opencv3.x版本中去除了该功能,但是由于opencv的开源,仍然可以把opencv2.x中的库函数包含进来进行编译。
本文介绍一种简单的方法进行图像的批量读取操作,需要一个.txt文件来存放待读取的图像的名称(格式100.jpg),每行存放一个图像的名称。
实现代码如下:
#include <opencv2\opencv.hpp>
#include <iostream>
#include <fstream>
using namespace std;
using namespace cv;
int main(){
Mat image;
string ImgName;
ifstream fin("D:\\C++\\C2G\\C2G\\train1\\list.txt");
while (getline(fin, ImgName)){
cout << "Handle" << ImgName << endl;
ImgName = "D:\\C++\\C2G\\C2G\\train1\\" + ImgName ;
image = imread(ImgName);
if (!image.empty()){
imshow("1", image);
Mat gray, boost;
//对图像的操作
decolor(image, gray, boost);
imshow("2", gray);
//保存到原路径下
imwrite(ImgName, gray);
cout << "Done" << endl;
}
}
cvWaitKey(0);
return 0;
}