opencv 批量处理图像

Posted LinuxC++计算机视觉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 批量处理图像相关的知识,希望对你有一定的参考价值。

 为了批量处理图像,网上找了好久,基本上都是C语言的sprinrf() 和 sprinrf_s()的方法;参数输入 只能是 char* 类型; 我下面献上C++的简洁方法。

 

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>
#include <string>

using namespace cv;
using namespace std;

int main()
{
  Mat srcImage;
  Mat dstImage;
  Mat hsvImage;

  string fileName;

  char* filePath = "E:\\素材\\海外卡口四车道\\雷达4车道录像_晚上\\201603152002\\dir.txt";
  char* dir = "E:\\素材\\海外卡口四车道\\雷达4车道录像_晚上\\201603152002\\";

  ifstream inFile(filePath);
  if (!inFile.is_open())
  {
    cerr<<"Failed open file"<<endl;
    return -1;
  }

  Size sz;
  double scale = 0.25;

  while (getline(inFile, fileName))  //按行读取文件名
  {
    cout<<dir<<endl;
    cout<<fileName<<endl;

    string str = dir + fileName; //连接文件路径与文件名;

    cout<<str<<endl;

    srcImage = imread(str,1);  //读入图像
    if (!srcImage.data)
    {
      cout<<"Image is filed"<<endl;
      return -1;
    }
   sz.width = (int)(srcImage.cols * 0.25);
   sz.height = (int)(srcImage.rows * 0.25);

   dstImage.create(sz, srcImage.type());
   resize(srcImage, dstImage, sz);
   namedWindow(fileName,1);
   imshow(fileName,dstImage);
   moveWindow(fileName, srcImage.cols, 0);

   hsvImage.create(sz,dstImage.type());
   cvtColor(dstImage,hsvImage,CV_BGR2Lab);//RGB转换到Lab颜色空间
   imshow("hsv",hsvImage);

   waitKey(0);

   destroyWindow(fileName);
}


inFile.close();
return 0;
}

 

以上是关于opencv 批量处理图像的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV玩耍批量resize一个文件夹里的所有图像

opencv如何批量读取文件夹中图片

python 批量等比修改文件夹下图片的尺寸

OpenCV-Python实战 —— OpenCV 实现批量将 bmppngjpg格式图片转换为 png 格式图片

详解C++标准库<sstream>中的类stringstream,并利用它实现OpenCV下的图片批量读取

求一段MATLAB图像批量处理和数据的存储的代码