169 lines
4.4 KiB
C++
169 lines
4.4 KiB
C++
#include "fbp.hpp"
|
|
|
|
void usage () {
|
|
printf("usage: fbp [-e(xtra_frames) #] [-f(ull_turn)] [-g(amma) #] [-G(ain) #]\n");
|
|
printf(" [-a(uto_size_and_range)] [-n(ormalizeByframe)] [-ba(ackground_auto)]\n");
|
|
printf(" [-bv(ackground:value) #] [-bb(ackground) x y w h] \n");
|
|
printf(" [-c(rop) x y w h] [-r firstframe last]\n");
|
|
printf(" [-p(reprocess)] [-t(hreads) #]\n");
|
|
printf(" [-m(ask_margin_pixel) #]\n");
|
|
printf(" [-R(otate_additional) x y z] [-C(rop_before_rotate) x y w h]\n");
|
|
printf(" [-o(utput) dir|file.tif(f)]\n");
|
|
printf(" scan.[avi mp4 tif tiff]\n");
|
|
printf("Version (Build date): %s\n",__DATE__);
|
|
}
|
|
|
|
int main(int argc, char* argv[]) {
|
|
bool full_turn=false,
|
|
auto_size=false,
|
|
auto_background=false,
|
|
preprocessOnly=false,
|
|
normalizeByframe=false;
|
|
double gammaVal=2.2,gainVal=1.0;
|
|
float background=0.0;
|
|
|
|
string input,output;
|
|
int pointcloud_threshold=0,
|
|
extra_frames=0,
|
|
first=0,
|
|
last=0,
|
|
mask_margin=0,
|
|
threads=0,
|
|
rotX=0,
|
|
rotY=0,
|
|
rotZ=0;
|
|
|
|
Rect2d crop,bbackground;
|
|
|
|
if (argc<2) { usage(); return EXIT_FAILURE; }
|
|
for (int i = 1; i < argc; ++i) {
|
|
if (std::string(argv[i]) == "-n") {
|
|
normalizeByframe=true;
|
|
}
|
|
if (std::string(argv[i]) == "-f") {
|
|
full_turn=true;
|
|
}
|
|
if (std::string(argv[i]) == "-a") {
|
|
auto_size=true;
|
|
}
|
|
if (std::string(argv[i]) == "-ba") {
|
|
auto_background=true;
|
|
}
|
|
if (std::string(argv[i]) == "-p") {
|
|
preprocessOnly=true;
|
|
}
|
|
if (std::string(argv[i]) == "-e") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
extra_frames = std::stoi(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-m") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
mask_margin = std::stoi(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-t") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
threads = std::stoi(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-r") {
|
|
if (i + 2 < argc) {
|
|
i++;
|
|
first = std::stoi(argv[i++]);
|
|
last = std::stoi(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-c") {
|
|
if (i + 4 < argc) {
|
|
i++;
|
|
crop.x = std::stof(argv[i++]);
|
|
crop.y = std::stof(argv[i++]);
|
|
crop.width = std::stof(argv[i++]);
|
|
crop.height = std::stof(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-R") {
|
|
if (i + 3 < argc) {
|
|
i++;
|
|
rotX = std::stoi(argv[i++]);
|
|
rotY = std::stoi(argv[i++]);
|
|
rotZ = std::stoi(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-bb") {
|
|
if (i + 2 < argc) {
|
|
i++;
|
|
bbackground.x = std::stof(argv[i++]);
|
|
bbackground.y = std::stof(argv[i++]);
|
|
bbackground.width = std::stof(argv[i++]);
|
|
bbackground.height = std::stof(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-bv") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
background = (double)std::stof(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-g") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
gammaVal = (double)std::stof(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-G") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
gainVal = (double)std::stof(argv[i]);
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (std::string(argv[i]) == "-o") {
|
|
if (i + 1 < argc) {
|
|
i++;
|
|
output = argv[i];
|
|
continue;
|
|
} else { usage(); return EXIT_FAILURE; }
|
|
}
|
|
if (argv[i][0]!='-') {
|
|
input=argv[i];
|
|
}
|
|
}
|
|
|
|
fbp(input,
|
|
output,
|
|
extra_frames,
|
|
pointcloud_threshold,
|
|
normalizeByframe,
|
|
full_turn,
|
|
auto_size,
|
|
auto_background,
|
|
preprocessOnly,
|
|
gammaVal,
|
|
background,
|
|
gainVal,
|
|
first,
|
|
last,
|
|
crop,
|
|
bbackground,
|
|
mask_margin,
|
|
threads,
|
|
rotX,
|
|
rotY,
|
|
rotZ);
|
|
return 0;
|
|
}
|