#include #include #include #include // ------------------------------------------------------------------------- typedef cpPlugins::Interface::Plugins TPlugins; // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { if( argc < 4 ) { std::cerr << "Usage: " << argv[ 0 ] << " plugins_file" << " input_image threshold output_image" << std::endl; return( 1 ); } // fi // Load plugins cpPlugins::Interface::Plugins plugins; if( !plugins.LoadPluginsPath( argv[ 1 ] ) ) { std::cerr << "Failed to load plugins." << std::endl; return( 1 ); } // fi // Associate filenames std::vector< std::string > fnames; for( int i = 2; i < argc - 2; ++i ) fnames.push_back( argv[ i ] ); // Read image std::string filter = "cpPlugins::BasicFilters::MarchingCubes"; try { std::string name = plugins.ReadImage( fnames, "" ); if( !( plugins.ActivateFilter( filter ) ) ) { std::cerr << "Filter \"" << filter << "\" not found." << std::endl; return( 1 ); } // fi // Connect IO objects TPlugins::TStringContainer inputs, outputs; plugins.GetActiveFilterInputsNames( inputs ); plugins.GetActiveFilterOutputsNames( outputs ); plugins.ConnectInputInActiveFilter( name, *( inputs.begin( ) ) ); //plugins.SetOutputNameInActiveFilter( "output_mesh", *( outputs.begin( ) ) ); // Configure filter TPlugins::TParameters* params = plugins.GetActiveFilterParameters( ); params->AddToRealList( "Thresholds", std::atof( argv[ argc - 2 ] ) ); // Execute filter TPlugins::TStringContainer generated_outputs; if( !( plugins.UpdateActiveFilter( generated_outputs, name ) ) ) { std::cerr << "Error using filter \"" << filter << "\"." << std::endl; return( 1 ); } // fi // Save mesh std::string outmesh_name = *( generated_outputs.begin( ) ); if( !( plugins.WriteDataObject( argv[ argc - 1 ], outmesh_name ) ) ) { std::cerr << "Error writing result into \"" << argv[ argc - 1 ] << "\"" << std::endl; return( 1 ); } // fi } catch( std::exception& err ) { std::cerr << err.what( ) << std::endl; return( 1 ); } // yrt return( 0 ); } // eof - $RCSfile$