It returns a
str on the format
_00007f55d65c1010_p_void. Any way to get a Python array to the underlying image data in a zero copy way? I looked at
numpy_support.py but couldn’t find anything like that.
It returns a
Replying to self, I think I found the answer in
One can create a VTK array and use
Worked like a charm. Excerpt from my code:
from vtk import vtkUnsignedCharArray from vtk.util.numpy_support import vtk_to_numpy ... array = vtkUnsignedCharArray() array.SetNumberOfTuples(numBytes) array.SetVoidArray(image.GetScalarPointer(), numBytes, 1) frame = vtk_to_numpy(array)
vtki has some very useful numpy-VTK array access helpers that might help you down the road!
say you have some image data (
vtki.UniformGrid) given in the example dataset:
>>> import vtk >>> from vtki import examples >>> import numpy as np >>> data = examples.load_uniform() >>> isinstance(data, vtk.vtkImageData) True >>> isinstance(data.active_scalar, np.ndarray) True
See Berk’s 5-part series of blog posts on VTK/NumPy integration, starting with Improved VTK – numpy integration.
Thanks for the pointers to both of you.
In this case I could make due with just
vtk_to_numpy. I needed to write the RGB bytes of the image to stdin of an ffmpeg process. Perhaps I could have done that without involving numpy at all (what I did was
(The image came from a vtkWindowToImage filter.)