读取文件夹中的所有文件名
#include <dirent.h>
void getImages(std::string &dir,std::vector<std::string> &files)
{
DIR *dp;
struct dirent *dirp;
if((dp = opendir(dir.c_str())) == NULL)
{
return -1;
}
int ImgNum = 0;
while ((dirp = readdir(dp)) != NULL)
{
std::string name = std::string(dirp->d_name);
if(name != "." && name != ".." && name !=".DS_Store")
{
files.push_back(name);
ImgNum++;
}
}
closedir(dp);
}
boost 数字转字符串
#include <boost/lexical_cast.hpp>
boost::lexical_cast<std::string>(i);
存文件
#include <iomanip>
#include <sstream>
#include <fstream>
#include <iostream>
#include <boost/lexical_cast.hpp>
string outputName = "descriptors_" + boost::lexical_cast<std::string>(1) + ".txt";
ofstream of;
of.open(outputName);
float a = 1.0;
of<< std::setprecision(6)<<a<<endl;
of.close();
设置填0格式名
std::stringstream oo;
int i = 1;
oo<<std::setfill(‘0')<<std::setw(2)<<i;
读取文件流转opencv cv::Mat
#include <iterator>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
// openFile
std::ifstream inFile(filePath.c_str(), ios_base::in);
if(!inFile.is_open())
{
cout << "error: read filed" << endl;
return;
}
// load data flow
istream_iterator<float> begin(inFile);
istream_iterator<float> end;
vector<float> inData(begin,end);
cv::Mat tmpMat = cv::Mat(inData, CV_32FC1);
int rows = inData.size()/64;
int cols = 64;
coarseIndex = tmpMat.reshape(cols, rows).clone();