下面介绍两种方法,两种方法比较相似,通过提取路径以及文件名,最终放到imread里面,读取图片,代码比较简单,就不解释了。
方法一:
头文件:#pragma once
#ifndef _HEAD_H_
#define _HEAD_H_
//OpencvDirTraverse.cpp : Defines the entry point for the console application.
#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>
#include <vector>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include "opencv\cv.h"
#include "opencv2\core\core.hpp"
#include "opencv2\highgui\highgui.hpp"
#include "opencv2\imgproc\imgproc.hpp"
#include "opencv2\contrib\contrib.hpp"
using namespace std;
using namespace cv;
#endif // !_HEAD_H_
main函数
#include "head.h"
int main(int argc, char * argv[])
{
string dir_path = "D:/Photo and Video/ImageDVS/";
Directory dir;
vector<string> fileNames = dir.GetListFiles(dir_path, "*.jpg", false);
for (int i = 0; i < fileNames.size(); i++)
{
string fileName = fileNames[i];
string fileFullName = dir_path + fileName;
cout << "file name:" << fileName << endl;
cout << "file paht:" << fileFullName << endl << endl;
//Image processing
Mat pScr;
pScr = imread(fileFullName, 1);
imshow("picture", pScr);
waitKey(30);
}
return EXIT_SUCCESS;
}
方法二:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace cv;
using namespace std;
int main() {
std::string pattern_jpg = "D:\\Photo and Video\\destop1\\*.jpg";
std::vector<cv::String> image_files;
cv::glob(pattern_jpg, image_files);
if (image_files.size() == 0) {
std::cout << "No image files[jpg]" << std::endl;
return 0;
}
for (unsigned int frame = 0; frame < image_files.size(); ++frame) {//image_file.size()代表文件中总共的图片个数
Mat image = cv::imread(image_files[frame]);
imshow("1", image);
waitKey(30);
}