#include #include #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 ) { 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[ "FileName" ].second = 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 ) { std::cerr << "Usage: " << argv[ 0 ] << " plugins_file" << " input_image" << " output_hue_image output_saturation_image output_value_image" << " dimensions pixel_type" << 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 TInterface plugins; plugins.Load( plugins_file ); // Create objects TProcessObject::Pointer reader; TProcessObject::Pointer filter; reader = plugins.CreateProcessObject( "cpPlugins::Plugins::ImageReader" ); if( reader.IsNull( ) ) { std::cerr << "No suitable reader found in plugins." << std::endl; return( 1 ); } // fi filter = plugins.CreateProcessObject( "cpPlugins::Plugins::RGBImageToHSVChannelsFilter" ); if( filter.IsNull( ) ) { std::cerr << "No suitable filter 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"; reader->SetParameters( reader_params ); // Connect pipeline filter->SetInput( 0, reader->GetOutput( 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 ) ); return( 0 ); } // eof - $RCSfile$