25 #include <Utils/Param.hh>
26 #include <Base/Image/ImageIO.hh>
27 #include <Image/Camera.hh>
39 int convertImage(
string &input,
string &output) {
45 cout <<
"Loading " << input << endl << flush;
46 if (ImageIO::Load(input,img) < 0) {
47 cerr <<
"Error loading image!" << endl << flush;
54 case ImageBase::ST_invalid :
55 cerr <<
"Invalid storage type for image: " << input << endl << flush;
58 case ImageBase::ST_unsignedchar :
61 cam.ParseMetaData(
false);
63 if (ImageIO::Save(output,cam) < 0) {
64 cerr <<
"Error writing file " << output << endl;
69 #ifdef BUILD_IMAGE_CHAR
70 case ImageBase::ST_char :
73 cam.ParseMetaData(
false);
75 if (ImageIO::Save(output,cam) < 0) {
76 cerr <<
"Error writing file " << output << endl;
81 #endif //BUILD_IMAGE_CHAR
82 #ifdef BUILD_IMAGE_USHORT
83 case ImageBase::ST_unsignedshortint :
86 cam.ParseMetaData(
false);
88 if (ImageIO::Save(output,cam) < 0) {
89 cerr <<
"Error writing file " << output << endl;
94 #endif //BUILD_IMAGE_USHORT
95 #ifdef BUILD_IMAGE_SHORT
96 case ImageBase::ST_shortint :
99 cam.ParseMetaData(
false);
100 cam.UpdateMetaData();
101 if (ImageIO::Save(output,cam) < 0) {
102 cerr <<
"Error writing file " << output << endl;
107 #endif //BUILD_IMAGE_UINT
108 #ifdef BUILD_IMAGE_UINT
109 case ImageBase::ST_unsignedint :
112 cam.ParseMetaData(
false);
113 cam.UpdateMetaData();
114 if (ImageIO::Save(output,cam) < 0) {
115 cerr <<
"Error writing file " << output << endl;
120 #endif //BUILD_IMAGE_UINT
121 #ifdef BUILD_IMAGE_INT
122 case ImageBase::ST_int :
125 cam.ParseMetaData(
false);
126 cam.UpdateMetaData();
127 if (ImageIO::Save(output,cam) < 0) {
128 cerr <<
"Error writing file " << output << endl;
133 #endif //BUILD_IMAGE_INT
134 case ImageBase::ST_float :
137 cam.ParseMetaData(
false);
138 cam.UpdateMetaData();
139 if (ImageIO::Save(output,cam) < 0) {
140 cerr <<
"Error writing file " << output << endl;
145 #ifdef BUILD_IMAGE_DOUBLE
146 case ImageBase::ST_double :
149 cam.ParseMetaData(
false);
150 cam.UpdateMetaData();
151 if (ImageIO::Save(output,cam) < 0) {
152 cerr <<
"Error writing file " << output << endl;
157 #endif //BUILD_IMAGE_DOUBLE
159 cerr <<
"unsupported storage type" << endl;
162 cout <<
"Processed image: " << input << endl;
163 cout <<
" wrote to: " << output << endl;
168 int main(
int argc,
char* args[]) {
173 "Give filename for input filelist (txt-format with images seperated by whitespaces)",
175 parameters.
AddParamString(
"inputfile",
"Give filename for input file",
"",
'i', GRP_ALL);
177 "Give filename for output filelist (txt-format with images seperated by whitespaces)",
179 parameters.
AddParamString(
"outputfile",
"Give filename for output file",
"",
'o', GRP_ALL);
181 bool bUseList =
false;
182 bool bUseFile =
false;
183 string *in_filelist = NULL;
185 string *in_file = NULL;
187 string *out_filelist = NULL;
189 string *out_file = NULL;
191 if ((*in_filelist !=
"")&&(*out_filelist !=
"")) {
194 if ((*in_file !=
"")&&(*out_file !=
"")) {
199 if (!bUseFile && !bUseList) {
200 cerr <<
"Give either in-/output file or in-/output filelist (--help for options)!" << endl;
206 string inFile(*in_file);
207 string outFile(*out_file);
208 if (convertImage(inFile, outFile) < 0) {
217 ifstream
inlist(in_filelist->c_str());
218 ifstream outlist(out_filelist->c_str());
219 while((
inlist >> inFile) && (outlist >> outFile)) {
220 if (convertImage(inFile, outFile) < 0)
227 cout <<
"finished processing" << endl << flush;
int ParseCommandLine(int &argc, char *argv[])
scan command line arguments for valid parameters
std::string * GetParamString(const std::string &name) const
This class Param provides generic support for parameters.
enum EStorageType GetStorageType() const
This is the base class for images in BIAS.
std::string * AddParamString(const std::string &name, const std::string &help, std::string deflt="", char cmdshort=0, int Group=GRP_NOSHOW)