[vtkusers] Extract Data from vtkImageReslice to numpy array
Peter Bloomfield
peter.bloomfield at camhpet.ca
Tue Jun 30 12:09:32 EDT 2009
Hi,
I just tried the following,
I read my flat image data (I assume)
reader = vtk.vtkImageReader2()
reader.SetFileName("MyImage.img")
reader.SetDataExtent(0, 255, 0, 255, 0, 206)
reader.SetDataSpacing(1.218750, 1.218750, 1.218750)
reader.SetDataOrigin(0.0, 0.0, 0.0)
reader.SetDataScalarTypeToFloat()
reader.SetFileDimensionality(3)
reader.Update()
and then tried the following
image_cells = reader.GetOutput().GetCellData()
print image_cells
vtkCellData (0x833e630)
Debug: Off
Modified Time: 211
Reference Count: 2
Registered Events: (none)
Number Of Arrays: 0
Number Of Components: 0
Number Of Tuples: 0
Copy Tuple Flags: ( 1 1 1 1 1 0 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 )
Pass Through Flags: ( 1 1 1 1 1 1 1 )
Scalars: (none)
Vectors: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
So have i actually loaded the image data and is image_cells empty?
Thanks for your help
Peter
On Tuesday 30 June 2009 10:35:53 am Eric E. Monson wrote:
> Hey Peter,
>
> There is a handy set of utilities for converting between vtkDataArray
> (e.g. vtkDoubleArray, vtkIntArray) and numpy arrays called
> numpy_support that may help you. Try something like this:
>
> import vtk
> import vtk.util.numpy_support as VN
>
> reader = vtk.vtkXMLImageDataReader()
> reader.SetFileName('chombo3d_1.vti')
> reader.Update()
> image_cells = reader.GetOutput().GetCellData()
> phi_array = VN.vtk_to_numpy(image_cells.GetArray('phi'))
>
> Note that numpy_to_vtk() is also in there. There may be other nice
> tricks, but I find this module very useful.
>
> Good luck,
> -Eric
>
> ------------------------------------------------------
> Eric E Monson
> Duke Visualization Technology Group
>
> On Jun 30, 2009, at 9:54 AM, Peter Bloomfield wrote:
> > Hello,
> >
> > I am new to VTK, so if this has been asked before I apologise.
> >
> > I am trying to use VTK from within Python. I successfully downloaded
> > and
> > compiled VTK V5.4.2 including the python wrappings/bindings, and
> > issuing
> > 'import vtk' from within python works good.
> >
> > Initially I want to do is take a volume of data (float), re-slice it
> > in an
> > arbitrary orientation and then extract the re-sliced plane from vtk
> > and return
> > it to a numpy array.
> >
> > I am using vtk.vtkImageReslice(), but do not know how to get the
> > data out from
> > here.
> >
> > Does anyone have any suggestions of how I can achieve this? I have
> > tried
> > looking at vtkImageExportToArray but have no idea how to use this
> > from within
> > python.
> >
> > Many thanks
> >
> >
> > Peter
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
More information about the vtkusers
mailing list