VTK/Examples/Cxx/Broken/ImageData/vtkImageIterator

From KitwarePublic

Jump to: navigation, search

This example is currently broken. It only retrieves 3 points and there should be 6.

ImageIterator.cxx

#include <vtkSmartPointer.h>
#include <vtkImageData.h>
#include <vtkImageIterator.h>
 
int main(int, char *[])
{
  // Create an image data
  vtkSmartPointer<vtkImageData> imageData =
      vtkSmartPointer<vtkImageData>::New();
 
  // Specify the size of the image data
  imageData->SetDimensions(2,3,1);
 
  // Fill every entry of the image data with "2.0"
  int* dims = imageData->GetDimensions();
 
  for (int z=0; z<dims[2]; z++)
    {
    for (int y=0; y<dims[1]; y++)
      {
      for (int x=0; x<dims[0]; x++)
        {
        imageData->SetScalarComponentFromDouble(x,y,z,0,2.0);
        }
      }
    }
 
  int extent[6];
  imageData->GetExtent(extent);
 
  // Retrieve the entries from the image data and print them to the screen
  vtkImageIterator<double> it(imageData, extent);
  double* val = it.BeginSpan();
 
  while(!it.IsAtEnd())
    {
    std::cout << "val: " << val[0] << " " << val[1] << " " << val[2] << std::endl;
    it.NextSpan();
    }
 
  return EXIT_SUCCESS;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
PROJECT(ImageIterator)
 
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
 
ADD_EXECUTABLE(ImageIterator ImageIterator.cxx)
TARGET_LINK_LIBRARIES(ImageIterator vtkHybrid)
Personal tools