#include <cpExtensions/Visualization/ImageSliceActors.h>
+
+#include <cpExtensions/Visualization/ImageBlender.h>
+#include <vtkPNGWriter.h>
+
+
// -------------------------------------------------------------------------
typedef cpPlugins::Interface::Interface TInterface;
typedef cpPlugins::Interface::ProcessObject TProcessObject;
{
std::cerr
<< "Usage: " << argv[ 0 ]
- << " plugins_file input_image"
+ << " plugins_file input_image [widget]"
<< std::endl;
return( 1 );
} // fi
// Configure reader
- TParameters reader_params = reader->GetDefaultParameters( );
- for( int i = 2; i < argc; ++i )
- reader_params.AddValueToStringList( "FileNames", argv[ i ] );
- reader->SetParameters( reader_params );
+ TParameters* reader_params = reader->GetParameters( );
+ if( argc > 4 )
+ {
+ for( int i = 2; i < argc; ++i )
+ reader_params->AddToStringList( "FileNames", argv[ i ] );
+ }
+ else
+ reader_params->AddToStringList( "FileNames", argv[ 2 ] );
// Execute pipeline
std::string err = reader->Update( );
return( 1 );
} // fi
- TImage* image = reader->GetOutput< TImage >( 0 );
+ TImage* image = reader->GetOutput< TImage >( "Output" );
// Configure visualization objects
vtkSmartPointer< vtkRenderer > renderer =
window->AddRenderer( renderer );
window->SetSize( 600, 600 );
- // Set up interaction style
- /*
- vtkSmartPointer< example_BaseInteractorStyle > style =
- vtkSmartPointer< example_BaseInteractorStyle >::New( );
- */
-
// Set up the interaction
vtkSmartPointer< vtkRenderWindowInteractor > interactor =
vtkSmartPointer< vtkRenderWindowInteractor >::New( );
- // interactor->SetInteractorStyle( style );
window->SetInteractor( interactor );
// Create slice actors
vtkSmartPointer< TSliceActors > image_actors =
vtkSmartPointer< TSliceActors >::New( );
- image_actors->AddInputData( image->GetVTK< vtkImageData >( ) );
- image_actors->PushActorsInto( renderer );
- interactor->SetInteractorStyle( image_actors->GetStyle( ) );
+ image_actors->AddInputData( image->GetVTK< vtkImageData >( ), 2 );
+ image_actors->PushActorsInto( window );
+
+
+
+
+
+ vtkImageData* vimage = image->GetVTK< vtkImageData >( );
+ double range[ 2 ];
+ vimage->GetScalarRange( range );
+
+ vtkSmartPointer< cpExtensions::Visualization::ImageBlender > blender =
+ vtkSmartPointer< cpExtensions::Visualization::ImageBlender >::New( );
+ blender->AddInputData( vimage );
+ blender->SetWindow( range[ 1 ] - range[ 0 ] );
+ blender->SetLevel( ( range[ 1 ] + range[ 0 ] ) / double( 2 ) );
+ blender->Update( );
+
+ std::cout << blender->GetWindow( ) << " " << blender->GetLevel( ) << std::endl;
+
+ vtkSmartPointer< vtkPNGWriter > writer =
+ vtkSmartPointer< vtkPNGWriter >::New( );
+ writer->SetInputConnection( blender->GetOutputPort( ) );
+ writer->SetFileName( "leo_actor.png" );
+ writer->Write( );
+
+ return( 0 );
+
+
+ // Activate seed widget
+ if( argc == 4 )
+ {
+ TSliceActors::TStyle* style =
+ dynamic_cast< TSliceActors::TStyle* >( image_actors->GetStyle( ) );
+ if( style != NULL )
+ {
+ if( std::string( argv[ 3 ] ) == std::string( "seed" ) )
+ style->SeedWidgetOn( );
+
+ } // fi
+
+ } // fi
// Begin interaction
+ image_actors->ResetCamera( );
window->Render( );
interactor->Start( );