X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2Fexamples%2Fexample_RGBImageToHSVChannels.cxx;h=57d0581ad4ad3a4b165a197c5557079de3c12368;hb=4f9005fe71854d7cff6ab68e48627989a6d1fbc8;hp=84b9d3cd9a5243a56fb5e23d2a1a6cb354182080;hpb=cf01030f78d919f66b53a80831e1e89b0cb13397;p=cpPlugins.git diff --git a/appli/examples/example_RGBImageToHSVChannels.cxx b/appli/examples/example_RGBImageToHSVChannels.cxx index 84b9d3c..57d0581 100644 --- a/appli/examples/example_RGBImageToHSVChannels.cxx +++ b/appli/examples/example_RGBImageToHSVChannels.cxx @@ -3,102 +3,74 @@ #include #include -#include #include -// ------------------------------------------------------------------------- -typedef cpPlugins::Interface::Interface TInterface; -typedef cpPlugins::Interface::DataObject TDataObject; -typedef TInterface::TClasses TClasses; -typedef cpPlugins::Interface::ProcessObject TProcessObject; -typedef cpPlugins::Interface::Parameters TParameters; - -// ------------------------------------------------------------------------- -void SaveImage( - TInterface& plugins, const std::string& fname, TDataObject* image - ) -{ - TProcessObject::Pointer writer; - writer = plugins.CreateProcessObject( "cpPlugins::Plugins::ImageWriter" ); - if( writer.IsNull( ) ) - { - std::cerr << "No suitable writer found in plugins." << std::endl; - return; - - } // fi - // Configure reader - TParameters writer_params = writer->GetDefaultParameters( ); - writer_params.SetValueAsString( "FileName", fname ); - writer->SetParameters( writer_params ); - - writer->SetInput( 0, image ); - std::string msg = writer->Update( ); - if( msg != "" ) - std::cerr << "ERROR: " << msg << std::endl; -} - -// ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { - if( argc < 8 ) + if( argc < 4 ) { std::cerr << "Usage: " << argv[ 0 ] << " plugins_file" - << " input_image" - << " output_hue_image output_saturation_image output_value_image" - << " dimensions pixel_type" << std::endl; + << " input_image output_image" << std::endl; return( 1 ); } // fi - std::string plugins_file = argv[ 1 ]; - std::string input_image_file = argv[ 2 ]; - std::string output_hue_image_file = argv[ 3 ]; - std::string output_saturation_image_file = argv[ 4 ]; - std::string output_value_image_file = argv[ 5 ]; - unsigned int dimensions = std::atoi( argv[ 6 ] ); - std::string pixel_type = argv[ 7 ]; // Create interface - + typedef cpPlugins::Interface::Interface TInterface; + typedef TInterface::TClasses TClasses; TInterface plugins; - plugins.Load( plugins_file ); - - // Create objects - TProcessObject::Pointer reader; - TProcessObject::Pointer filter; - - reader = plugins.CreateProcessObject( "cpPlugins::Plugins::ImageReader" ); - if( reader.IsNull( ) ) + if( !plugins.Load( argv[ 1 ] ) ) { - std::cerr << "No suitable reader found in plugins." << std::endl; + std::cerr << "Failed to load plugins." << std::endl; return( 1 ); } // fi - filter = plugins.CreateProcessObject( "cpPlugins::Plugins::RGBImageToHSVChannelsFilter" ); - if( filter.IsNull( ) ) + + // Create objects + typedef cpPlugins::Interface::ProcessObject TProcessObject; + typedef cpPlugins::Interface::DataObject TDataObject; + typedef cpPlugins::Interface::Parameters TParameters; + cpPlugins::Interface::ProcessObject::Pointer reader, writer, filter; + reader = plugins.CreateProcessObject( "cpPlugins::ImageReader" ); + writer = plugins.CreateProcessObject( "cpPlugins::ImageWriter" ); + filter = plugins.CreateProcessObject( "cpPlugins::RGBImageToOtherChannelsFilter"); + if( reader.IsNull( ) || writer.IsNull( ) || filter.IsNull( ) ) { - std::cerr << "No suitable filter found in plugins." << std::endl; + std::cerr << "No suitable objects found in plugins." << std::endl; return( 1 ); } // fi // Configure reader TParameters reader_params = reader->GetDefaultParameters( ); - reader_params.SetValueAsString( "FileName", input_image_file ); - reader_params.SetValueAsString( "PixelType", pixel_type ); - reader_params.SetValueAsUint( "ImageDimension", dimensions ); - reader_params.SetValueAsUint( "IsColorImage", 1 ); + for( int i = 2; i < argc - 1; ++i ) + reader_params.AddValueToStringList( "FileNames", argv[ i ] ); reader->SetParameters( reader_params ); + // Configure filter + TParameters filter_params = filter->GetDefaultParameters( ); + filter_params.SetValueAsString( "OutChannel", "HSV" ); + filter->SetParameters( filter_params ); + + // Configure writer + TParameters writer_params = writer->GetDefaultParameters( ); + writer_params.SetValueAsString( "FileName", argv[ argc - 1 ] ); + writer->SetParameters( writer_params ); + // Connect pipeline - filter->SetInput( 0, reader->GetOutput( 0 ) ); + filter->SetInput( 0, reader->GetOutput< TDataObject >( 0 ) ); + writer->SetInput( 0, filter->GetOutput< TDataObject >( 0 ) ); - // Save outputs - SaveImage( plugins, output_hue_image_file, filter->GetOutput( 0 ) ); - SaveImage( plugins, output_saturation_image_file, filter->GetOutput( 1 ) ); - SaveImage( plugins, output_value_image_file, filter->GetOutput( 2 ) ); + // Execute pipeline + std::string err = writer->Update( ); + if( err != "" ) + { + std::cerr << "ERROR: " << err << std::endl; + return( 1 ); + } // fi return( 0 ); }