Tue 31 Mar 10:10:24 CEST 2026
This commit is contained in:
parent
ba9a87f43e
commit
e78cdfd682
168
fbp/fbp.cpp
Normal file
168
fbp/fbp.cpp
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
#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;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user