c++结合opencv实现读取多张图片并显示

方法一

主要函数

void cv::glob(String pattern,std::vector<string>&result,bool recursive=false)

分析
String pattern:绝对路径下的照片

pattern = "/home/Data/data/*.jpg": 选择*.jpg这一类的图片

std::vector< cv::String > & result:这里必须为CV的String,即路径被存在string类型的vector中

bool recursive:可省去,当recursive为false时,仅仅遍历指定文件夹内符合模式的文件;当recursive为true时,会同时遍历指定文件夹的子文件夹

头文件AI.h

#pragma once
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

class Ve {
public:
	vector<Mat> ReadImage(cv::String pattern);
};

cpp文件:

#include "AI.h"
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
	cv::String pattern = "E:\\VSprojeect\\test\\test\\images\\*.png";
	Ve ve;
	vector<Mat> img = ve.ReadImage(pattern);
	return 0;
}
vector<Mat> Ve::ReadImage(cv::String pattern)
{
	vector<cv::String> fn;
	glob(pattern, fn, false);
	vector<Mat> images;
	size_t count = fn.size(); //number of png files in images folder
	for (size_t i = 0; i < count; i++)
	{
		images.emplace_back(cv::imread(fn[i]));
		imshow("img", imread(fn[i]));
		//imwrite("E:\\VSprojeect\\testyolo\\saveimg\\",images);
		waitKey(1000);
		destroyAllWindows();

	}
	return images;
}

方法二

当文件夹的图片名称没有规律或者有规律时(通用方法,万能模板)

#include<stdio.h>
#include "opencv2/opencv.hpp"
#include <opencv2\highgui\highgui.hpp>
#include<string>
#include<vector>
#include<iostream>
using namespace cv;
using namespace std;
void main() {
	String path = "E:\\VSprojeect\\get_muti_images\\images";//文件夹路径
	vector<String>src_test;
	glob(path, src_test, false);//将文件夹路径下的所有图片路径保存到src_test中
	if (src_test.size() == 0) {//判断文件夹里面是否有图片
		printf("error!!!\n");
		exit(1);
	}
	for (int i = 0; i < src_test.size(); i++) {//依照顺序读取问价下面的每张图片,并显示
		Mat image = imread(src_test[i]);
		imshow("image", image);
		waitKey(1000);
		image.release();//将Mat释放
		destroyAllWindows();

	}
}

方法三

文件夹下图片有序时,OpenCV读取方法

#include<stdio.h>
#include "opencv2/opencv.hpp"
#include <opencv2\highgui\highgui.hpp>
#include<string>
#include<iostream>
using namespace cv;
using namespace std;
void main(){
char fileName[500];
 Mat pic;
 for (int i = 0; i < 110; i++) {//文件夹下面一共有110张图片
  printf("start deal:%d\n", i + 1);
  sprintf_s(fileName, ".//picture//%d.bmp", i);//提取出文价夹下面的每张图片路径,放到fileName
  pic = imread(fileName);//读取fileName路径下面的图片
  imshow("tpian", pic);//显示图像
  waitKey(1000);//显示延时
 }
 pic.release();//将Mat释放
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪迹天涯@wxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值