文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-11-13 19:35

关注

方法一

主要函数

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

分析

String pattern:绝对路径下的照片

头文件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释放
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯