DGtalTools 2.0.0
Loading...
Searching...
No Matches
volCrop.cpp
1
2
31#include <iostream>
32#include <DGtal/base/Common.h>
33#include <DGtal/io/readers/VolReader.h>
34#include <DGtal/io/writers/VolWriter.h>
35#include <DGtal/helpers/StdDefs.h>
36#include <DGtal/images/ImageContainerBySTLVector.h>
37#include <DGtal/images/ConstImageAdapter.h>
38
39#include "CLI11.hpp"
40
41using namespace std;
42using namespace DGtal;
43using namespace Z3i;
44
93void missingParam ( std::string param )
94{
95 trace.error() <<" Parameter: "<<param<<" is required..";
96 trace.info() <<std::endl;
97 exit ( 1 );
98}
99
100int main(int argc, char**argv)
101{
102
103 // parse command line using CLI ----------------------------------------------
104 CLI::App app;
105 std::string inputFileName;
106 std::string outputFileName {"output.vol"};
107 int xMin {0};
108 int yMin {0};
109 int zMin {0};
110 int xMax;
111 int yMax;
112 int zMax;
113
114 app.description("Crops a 3D vol image from domain coordinates.\n Basic usage: \n \t volCrop --input <volFileName> --o <volOutputFileName> (both files can be independently in vol, pgm3D, p3d format)\nExample:\n volCrop --xMin 50 --yMin 50 --zMin 10 --xMax 150 --yMax 150 --zMax 50 -i ${DGtal}/examples/samples/lobster.vol -o croppedLobster.vol \n");
115
116 app.add_option("-i,--input,1", inputFileName, "Input vol file." )
117 ->required()
118 ->check(CLI::ExistingFile);
119 app.add_option("--output,-o,2", outputFileName, "Output filename.");
120
121 app.add_option("--xMin",xMin, "x coordinate of lower point.");
122 app.add_option("--yMin",yMin, "y coordinate of lower point.");
123 app.add_option("--zMin",zMin, "z coordinate of lower point.");
124
125 app.add_option("--xMax",xMax, "x coordinate of upper point.")
126 ->required();
127 app.add_option("--yMax",yMax, "y coordinate of upper point.")
128 ->required();
129 app.add_option("--zMax",zMax, "z coordinate of upper point.")
130 ->required();
131
132 app.get_formatter()->column_width(40);
133 CLI11_PARSE(app, argc, argv);
134 // END parse command line using CLI ----------------------------------------------
135
136 Z3i::Point ptLow( xMin, yMin, zMin);
137 Z3i::Point ptMax(xMax , yMax, zMax);
138
139 trace.beginBlock("Loading file");
140 typedef ImageContainerBySTLVector<Z3i::Domain, unsigned char> MyImageC;
141 MyImageC imageC = VolReader< MyImageC >::importVol ( inputFileName );
142 functors::Identity df;
143
144 typedef ConstImageAdapter<MyImageC, Domain, functors::Identity, MyImageC::Value, functors::Identity > ConstImageAdapterForSubImage;
145 Domain subDomain(ptLow, ptMax);
146 ConstImageAdapterForSubImage subImage(imageC, subDomain, df, df);
147 trace.endBlock();
148
149 trace.beginBlock("Exporting...");
150 bool res = VolWriter< ConstImageAdapterForSubImage>::exportVol(outputFileName, subImage);
151 trace.endBlock();
152 if (res) return 0; else return 1;
153}
Definition ATu0v1.h:57