[vtkusers] Printing the contents of a vtkWindowLevelLookupTable

Eva Monclús emonclus at cs.upc.edu
Wed Jul 18 07:20:08 EDT 2018

Hello everyone,

I'm working with a volume dataset which is visualized using a 
vtkWindowLevelLookupTable   with a vtkImageMapToColors which takes as an 
input vtkExtractVOI->GetOutputPort(). The vtkExtractVOI has as an 
inputdata the volume dataset.

This pipeline works fine. I can change the window/level of the 
vtkWindowLevelLookupTable  using  SetWindow/SetLevel methods and after 
that I always execute the Build method of the 
vtkWindowLevelLookupTable.   As I said, the changes in the window/level 
are properly mapped in the obtained visualization.

My problem starts when I try to print the colors of the 
vtkWindowLevelLookupTable  (I want to use them in another task).

I use the following code to print it, but I always obtain the same 
values (although I'm changing the window/level and I see how my changes 
affect the current rendering). But, although I change the window/level 
the printed messages are always the same.

void printVtKTransferFunction(vtkLookupTable *vtk_tf)
     vtkIdType tv = vtk_tf->GetNumberOfTableValues();
     double dR[2];
      cout << "Number of table values : " << tv << "\nTable Range: " << 
std::fixed  << std::setw(8) << std::setprecision(6)
                 << dR[0] << " to " << dR[1] << std::endl;
             std::vector<double> indices;
             for (int i = 0; i < tv; ++i)
                 indices.push_back((dR[1] - dR[0]) * i / tv + dR[0]);
             unsigned int id_tf = 0;
             for (std::vector<double>::const_iterator p = 
indices.begin(); p != indices.end(); ++p, id_tf++)
                 double rgba[4];
                 vtk_tf->GetColor(*p, rgba);
                 rgba[3] = vtk_tf->GetOpacity(*p);
                 cerr << id_tf << " : " << rgba[0] << " " << rgba[1] << 
" " << rgba[2] << " " << rgba[3] << endl;

Any help will be welcome.  Thank you very much in advance,


More information about the vtkusers mailing list