zoukankan      html  css  js  c++  java
  • opencv图像处理时使用文件输入流ifstream批量读取图片

    简介:

         在利用opencv进行图像处理时,通常需要批量读取图片,然后做相应的处理,我们可以用C++文件的输入流来进行图片的读取,这要求我们应该事先,将图片图片名生成txt文件,具体请参见之前的博文【ubuntu中获取文件名称并生成txt文件】。

    例程:

    实现功能,批量读取指定目录下的图片,为了检验是否成功,显示第一张图片的长和宽。

    #pragma GCC diagnostic error "-std=c++11"
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <fstream>    //使用ifstream,需要增加头文件fstream
    #include <iostream>
    #include <string>
    
    using namespace std;
    using namespace cv;
    
    int main()
    {
      ifstream fin("/home/ttwang/images/calibdata.txt");//读取指定目录下实现生成的txt文件
      int image_count = 0;
      Size image_size; //opencv中图片尺寸定义,成员有width和height
      string filename;  
      while(getline(fin,filename)) //使用getline函数,用法参见 c++ primer P79 3.2.2节
      {
        image_count++;
        cout << "processing: " << filename << endl; //打印读取结果,直观看文件是否读取成功
        filename = "/home/ttwang/images/"+filename;//图片路径
        Mat imageInput = imread(filename);//读图片
        if(image_count == 1) //打印第一幅图片的长和宽
        {
          image_size.width = imageInput.cols;
          image_size.height = imageInput.rows;
          cout << "image_size.width = " << image_size.width << endl;
          cout << "image_size.height = " << image_size.height << endl;
        }
      }
      return 0;
    }

    运行结果:

  • 相关阅读:
    Poj(1459),最大流,EK算法
    Poj(3259),SPFA,判负环
    HDU(3790),最短路二级标准
    Poj(2349),最小生成树的变形
    CSUFT2016训练赛
    NYOJ(21),BFS,三个水杯
    Poj(3687),拓扑排序,
    Poj(2367),拓扑排序
    HDU(1856),裸的带权并查集
    HDU(1572),最短路,DFS
  • 原文地址:https://www.cnblogs.com/ilym/p/8334519.html
Copyright © 2011-2022 走看看