opencv从文件夹中批量读取图片,并显示出来

下面介绍两种方法,两种方法比较相似,通过提取路径以及文件名,最终放到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);


	}

猜你喜欢

转载自blog.csdn.net/huoguangyao/article/details/80274260