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

开发技术 作者:iii 2024-04-16 00:50:01
这篇文章主要介绍“c++怎么结合opencv实现读取多张图片并显示”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“c++怎...

这篇文章主要介绍“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实现读取多张图片并显示”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注捷杰建站行业资讯频道,小编每天都会为大家更新不同的知识点。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_12067.html
c++ opencv