OpenCV-记录02:遍历文件图片的N种方法

OpenCV-记录02:遍历文件图片的N种方法

/*************************************************************************
*@ubuntu16.04
*@OpenCV 3.4.5
*@Time:2020.1.2
*@Author:Way
*@GitHub:https://github.com/Waycn
************************************************************************/

方法1:以文本文件的格式批量读取图像

int main()
{
  //--方法1
  int i=0;
  ifstream fin("data.txt"); //包含图像路径的文件
  //[c++输入文件流ifstream用法详解](https://blog.csdn.net/sinat_36219858/article/details/80369255)
  string filename;
  while (getline(fin,filename))
  {	
    //读取图片,改变图片大小
    Mat image=imread(filename);
    resize(image,image,Size(817,817));
    //保存处理后的图片
    string s = "../picture/" + to_string(i) + ".png";//根据自己路径适当修改
    imwrite(s,image);
    i++;  
  }
}

方法2:一定规律命名的图像

int main()
{
  //--方法2
  Mat image;
  string image_name;//图片路径
  int n=0;
  int NUM=43;//图片的数量
  while(n<=NUM)
  {
    stringstream ss;//int 转换string
    //[stringstream常见用法介绍](https://blog.csdn.net/liitdar/article/details/82598039)
    string str;
    ss<<n;
    ss>>str;
    image_name=str;
    image_name="../picture/"+image_name+".jpg";
    //读取图片、修改大小
    Mat image=imread(image_name);
    resize(image,image,Size(817,817));
    //保存修改后的图片
    string s = "../" + to_string(n) + ".png";
    imwrite(s,image);
    n++;  
  }

方法3:

int main()
{
  std::string pattern = "../marker/*.jpg";
  std::vector<cv::String> result;//注意:类型必须是cv::String
  cv::glob(pattern,result);
 /*
  *void glob(String pattern, std::vector<String>& result, bool recursive = false);
  *@false只遍历指定文件夹符合条件的
  *@true会遍历文件夹下的子文件夹
  */
  if(result.size()==0)
    std::cout<<"No Image Files[png]"<<std::endl;
  for (int i=0;i<result.size();i++)
  {
    Mat image =cv::imread(result[i]);
    cout <<result[i]<<endl;
    resize(image,image,Size(817,817));
    
    string s = "../" + to_string(i) + ".png";
    imwrite(s,image);
  }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值