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;
}

 

posted on 2016-03-27 23:49  计算机视觉&机器视觉  阅读(894)  评论(0编辑  收藏  举报

导航