您好,登录后才能下订单哦!
这篇文章主要介绍“c++怎么结合opencv实现读取多张图片并显示”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“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释放 }
关于“c++怎么结合opencv实现读取多张图片并显示”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。