kopia lustrzana https://github.com/OpenDroneMap/ODM
Write band descriptions
rodzic
1a15daa39b
commit
2032d35580
|
@ -2,6 +2,9 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <Eigen/StdVector>
|
#include <Eigen/StdVector>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cctype>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#include "OdmOrthoPhoto.hpp"
|
#include "OdmOrthoPhoto.hpp"
|
||||||
|
|
||||||
|
@ -168,15 +171,20 @@ void OdmOrthoPhoto::parseArguments(int argc, char *argv[])
|
||||||
std::stringstream ss(bandsOrder);
|
std::stringstream ss(bandsOrder);
|
||||||
std::string item;
|
std::string item;
|
||||||
while(std::getline(ss, item, ',')){
|
while(std::getline(ss, item, ',')){
|
||||||
if (item == "red" || item == "r"){
|
std::string itemL = item;
|
||||||
|
// To lower case
|
||||||
|
std::transform(itemL.begin(), itemL.end(), itemL.begin(), [](unsigned char c){ return std::tolower(c); });
|
||||||
|
|
||||||
|
if (itemL == "red" || itemL == "r"){
|
||||||
colorInterps.push_back(GCI_RedBand);
|
colorInterps.push_back(GCI_RedBand);
|
||||||
}else if (item == "green" || item == "g"){
|
}else if (itemL == "green" || itemL == "g"){
|
||||||
colorInterps.push_back(GCI_GreenBand);
|
colorInterps.push_back(GCI_GreenBand);
|
||||||
}else if (item == "blue" || item == "b"){
|
}else if (itemL == "blue" || itemL == "b"){
|
||||||
colorInterps.push_back(GCI_BlueBand);
|
colorInterps.push_back(GCI_BlueBand);
|
||||||
}else{
|
}else{
|
||||||
colorInterps.push_back(GCI_GrayIndex);
|
colorInterps.push_back(GCI_GrayIndex);
|
||||||
}
|
}
|
||||||
|
bandDescriptions.push_back(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,6 +246,10 @@ void OdmOrthoPhoto::saveTIFF(const std::string &filename, GDALDataType dataType)
|
||||||
}
|
}
|
||||||
GDALSetRasterColorInterpretation(hBand, interp );
|
GDALSetRasterColorInterpretation(hBand, interp );
|
||||||
|
|
||||||
|
if (i < bandDescriptions.size()){
|
||||||
|
GDALSetDescription(hBand, bandDescriptions[i].c_str());
|
||||||
|
}
|
||||||
|
|
||||||
if (GDALRasterIO( hBand, GF_Write, 0, 0, width, height,
|
if (GDALRasterIO( hBand, GF_Write, 0, 0, width, height,
|
||||||
bands[i], width, height, dataType, 0, 0 ) != CE_None){
|
bands[i], width, height, dataType, 0, 0 ) != CE_None){
|
||||||
std::cerr << "Cannot write TIFF to " << filename << std::endl;
|
std::cerr << "Cannot write TIFF to " << filename << std::endl;
|
||||||
|
|
|
@ -183,6 +183,7 @@ private:
|
||||||
|
|
||||||
std::vector<void *> bands;
|
std::vector<void *> bands;
|
||||||
std::vector<GDALColorInterp> colorInterps;
|
std::vector<GDALColorInterp> colorInterps;
|
||||||
|
std::vector<std::string> bandDescriptions;
|
||||||
void *alphaBand; // Keep alpha band separate
|
void *alphaBand; // Keep alpha band separate
|
||||||
int currentBandIndex;
|
int currentBandIndex;
|
||||||
|
|
||||||
|
|
|
@ -211,9 +211,9 @@ def config(argv=None, parser=None):
|
||||||
default='none',
|
default='none',
|
||||||
choices=['none', 'camera', 'camera+sun'],
|
choices=['none', 'camera', 'camera+sun'],
|
||||||
help=('Set the radiometric calibration to perform on images. '
|
help=('Set the radiometric calibration to perform on images. '
|
||||||
'When processing multispectral images you should set this option '
|
'When processing multispectral and thermal images you should set this option '
|
||||||
'to obtain reflectance values (otherwise you will get digital number values). '
|
'to obtain reflectance/temperature values (otherwise you will get digital number values). '
|
||||||
'[camera] applies black level, vignetting, row gradient gain/exposure compensation (if appropriate EXIF tags are found). '
|
'[camera] applies black level, vignetting, row gradient gain/exposure compensation (if appropriate EXIF tags are found) and computes absolute temperature values. '
|
||||||
'[camera+sun] is experimental, applies all the corrections of [camera], plus compensates for spectral radiance registered via a downwelling light sensor (DLS) taking in consideration the angle of the sun. '
|
'[camera+sun] is experimental, applies all the corrections of [camera], plus compensates for spectral radiance registered via a downwelling light sensor (DLS) taking in consideration the angle of the sun. '
|
||||||
'Can be one of: %(choices)s. Default: '
|
'Can be one of: %(choices)s. Default: '
|
||||||
'%(default)s'))
|
'%(default)s'))
|
||||||
|
|
|
@ -63,7 +63,7 @@ class ODMOrthoPhotoStage(types.ODM_Stage):
|
||||||
if not primary:
|
if not primary:
|
||||||
subdir = band['name'].lower()
|
subdir = band['name'].lower()
|
||||||
models.append(os.path.join(base_dir, subdir, model_file))
|
models.append(os.path.join(base_dir, subdir, model_file))
|
||||||
kwargs['bands'] = '-bands %s' % (','.join([quote(b['name'].lower()) for b in reconstruction.multi_camera]))
|
kwargs['bands'] = '-bands %s' % (','.join([quote(b['name']) for b in reconstruction.multi_camera]))
|
||||||
else:
|
else:
|
||||||
models.append(os.path.join(base_dir, model_file))
|
models.append(os.path.join(base_dir, model_file))
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue