需求说明:给定raw影像,为其添加匹配的头文件
#include <iostream>
#include <string>
#include <string>
#include <io.h>
#include <vector>
using namespace std;
void getFileNameFromFolder(string folder, vector<string>& fileNames)
{
long hFile = 0;
struct _finddata_t fileInfo;
folder += "*";//此处的*不能超=少
hFile = _findfirst(folder.c_str(), &fileInfo);
string tmp;
if (hFile != -1)
{
do
{
tmp = fileInfo.name;
if(tmp.length() < 4) continue;;
if (tmp.substr(tmp.length() - 4, tmp.length()) == ".raw")
{
fileNames.push_back(fileInfo.name);
}
} while (_findnext(hFile, &fileInfo) == 0);
}
}
void generateHeader(string fileName)
{
int width = 6024;
int height = 8008;
int nChannels = 1;
string path_out_hdr;
int pos=fileName.find(".raw");
if (pos!=-1)
path_out_hdr=fileName.replace(fileName.find(".raw"),4,".hdr");
else
path_out_hdr=fileName.append(".hdr");
FILE * fp_hdr=fopen(path_out_hdr.c_str(),"w+t");
fprintf(fp_hdr,"ENVI\ndescription = {\n File Imported into ENVI.}\nsamples = %d\nlines = %d\nbands = %d\nheader offset = 0\nfile type = ENVI Standard\ndata type = 12\ninterleave = bsq\nsensor type = Unknown\nbyte order = 0\nwavelength units = Unknown",width,height,nChannels);
fclose(fp_hdr);
}
int main()
{
string pDstImgFileName = "D:data\\";
vector<string> fileNames;
getFileNameFromFolder((string)pDstImgFileName, fileNames);
for (int i = 0; i < fileNames.size(); i++)
{
generateHeader(pDstImgFileName + fileNames[i]);
}
return 0;
}
注意事项:目录的最后一个字符应为*