#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 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.AddValueToStringList( "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 ) { 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 ]; unsigned int dimensions = std::atoi( 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.SetValueAsString( "FileName", input_image_file ); reader_params.SetValueAsString( "PixelType", pixel_type ); reader_params.SetValueAsUint( "ImageDimension", dimensions ); reader_params.SetValueAsUint( "IsColorImage", 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$