]> Creatis software - cpPlugins.git/blob - appli/bash/ConvertImage.cxx
...
[cpPlugins.git] / appli / bash / ConvertImage.cxx
1 /* =========================================================================
2  * @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3  * =========================================================================
4  */
5 #include <tclap/CmdLine.h>
6 #include <itkImage.h>
7 #include <itkImageFileReader.h>
8 #include <itkImageFileWriter.h>
9
10 // -------------------------------------------------------------------------
11 const unsigned int Dim = 2;
12 typedef unsigned char TPixel;
13 typedef itk::Image< TPixel, Dim > TImage;
14
15 // -------------------------------------------------------------------------
16 int main( int argc, char* argv[] )
17 {
18   // Parse arguments
19   std::string input_image_fname, output_image_fname;
20   try
21   {
22     TCLAP::CmdLine cmd( "Convert an image's format", ' ', "0.0.0" );
23     TCLAP::ValueArg< std::string > input(
24       "i", "input", "Input image", true, "", "filename"
25       );
26     TCLAP::ValueArg< std::string > output(
27       "o", "output", "Output image", true, "", "filename"
28       );
29     cmd.add( output );
30     cmd.add( input );
31     cmd.parse( argc, argv );
32     input_image_fname = input.getValue( );
33     output_image_fname = output.getValue( );
34   }
35   catch( TCLAP::ArgException& err )
36   {
37     std::cerr
38       << "Error caught: "
39       << err.error( ) << " "
40       << err.argId( ) << std::endl;
41     return( 1 );
42
43   } // yrt
44
45   // Pipeline
46   typedef itk::ImageFileReader< TImage > TReader;
47   TReader::Pointer reader = TReader::New( );
48   reader->SetFileName( input_image_fname );
49
50   typedef itk::ImageFileWriter< TImage > TWriter;
51   TWriter::Pointer writer = TWriter::New( );
52   writer->SetInput( reader->GetOutput( ) );
53   writer->SetFileName( output_image_fname );
54   try
55   {
56     writer->Update( );
57   }
58   catch( std::exception& err )
59   {
60     std::cerr << "Error caught: " << err.what( ) << std::endl;
61     return( 1 );
62
63   } // fi
64   return( 0 );
65 }
66
67 // eof - $RCSfile$