X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=appli%2Fexamples%2Fexample_RGBImageToHSVChannels.cxx;h=57d0581ad4ad3a4b165a197c5557079de3c12368;hb=3484fd70d5911c42f100b0c0ce0289c69f942c55;hp=7266800302c47aa44ebd84b1b82b587d26c3f1e3;hpb=2f1688b7490f99c3cb932344b1d8db51bd821c4b;p=cpPlugins.git diff --git a/appli/examples/example_RGBImageToHSVChannels.cxx b/appli/examples/example_RGBImageToHSVChannels.cxx index 7266800..57d0581 100644 --- a/appli/examples/example_RGBImageToHSVChannels.cxx +++ b/appli/examples/example_RGBImageToHSVChannels.cxx @@ -3,116 +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 TProcessObject::TParameters TParameters; - -// ------------------------------------------------------------------------- -void SaveImage( - TInterface& plugins, const std::string& fname, TDataObject* image - ) -{ - cpPlugins::Interface::ProcessObject* writer; - writer = - dynamic_cast< TProcessObject* >( - plugins.CreateObject( "cpPlugins::Plugins::ImageWriter" ) - ); - if( writer == NULL ) - { - std::cerr << "No suitable writer found in plugins." << std::endl; - return; - - } // fi - // Configure reader - TParameters writer_params = writer->GetDefaultParameters( ); - writer_params[ "FileName" ].second = fname; - writer->SetParameters( writer_params ); - - writer->SetInput( 0, image ); - std::string msg = writer->Update( ); - if( msg != "" ) - std::cerr << "ERROR: " << msg << std::endl; - delete writer; -} - -// ------------------------------------------------------------------------- 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 ]; - std::string dimensions = 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 - cpPlugins::Interface::ProcessObject* reader; - cpPlugins::Interface::ProcessObject* filter; - - reader = - dynamic_cast< TProcessObject* >( - plugins.CreateObject( "cpPlugins::Plugins::ImageReader" ) - ); - if( reader == NULL ) + 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 = - dynamic_cast< TProcessObject* >( - plugins.CreateObject( "cpPlugins::Plugins::RGBImageToHSVChannelsFilter" ) - ); - if( filter == NULL ) + + // 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[ "FileName" ].second = input_image_file; - reader_params[ "PixelType" ].second = pixel_type; - reader_params[ "ImageDimension" ].second = dimensions; - reader_params[ "IsColorImage" ].second = "1"; + for( int i = 2; i < argc - 1; ++i ) + reader_params.AddValueToStringList( "FileNames", argv[ i ] ); reader->SetParameters( reader_params ); - // Connect pipeline - filter->SetInput( 0, reader->GetOutput( 0 ) ); + // 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 ); - // 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 ) ); + // Connect pipeline + filter->SetInput( 0, reader->GetOutput< TDataObject >( 0 ) ); + writer->SetInput( 0, filter->GetOutput< TDataObject >( 0 ) ); - // Free memory - delete filter; - delete reader; + // Execute pipeline + std::string err = writer->Update( ); + if( err != "" ) + { + std::cerr << "ERROR: " << err << std::endl; + return( 1 ); + } // fi return( 0 ); }