PolyDataToImageDataStencil
VTKExamples/Python/PolyData/PolyDataToImageDataStencil
Description¶
- Contributed by: Peter Gruber
== Brief Description ==
This is an example from the vtkPolyDataToImageStencil tests. It converts the the polydata to imagedata and masks the given imagedata.
Code¶
PolyDataToImageDataStencil.py
import vtk from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # A script to test the stencil filter with a polydata stencil. # Image pipeline reader = vtk.vtkPNGReader() reader.SetDataSpacing(0.8, 0.8, 1.5) reader.SetDataOrigin(0.0, 0.0, 0.0) reader.SetFileName("" + str(VTK_DATA_ROOT) + "/Data/fullhead15.png") sphere = vtk.vtkSphereSource() sphere.SetPhiResolution(12) sphere.SetThetaResolution(12) sphere.SetCenter(102, 102, 0) sphere.SetRadius(60) triangle = vtk.vtkTriangleFilter() if vtk.VTK_MAJOR_VERSION <= 5: triangle.SetInput(sphere.GetOutput()) else: triangle.SetInputConnection(sphere.GetOutputPort()) stripper = vtk.vtkStripper() if vtk.VTK_MAJOR_VERSION <= 5: stripper.SetInput(triangle.GetOutput()) else: stripper.SetInputConnection(triangle.GetOutputPort()) dataToStencil = vtk.vtkPolyDataToImageStencil() if vtk.VTK_MAJOR_VERSION <= 5: dataToStencil.SetInput(stripper.GetOutput()) else: dataToStencil.SetInputConnection(stripper.GetOutputPort()) dataToStencil.SetOutputSpacing(0.8, 0.8, 1.5) dataToStencil.SetOutputOrigin(0.0, 0.0, 0.0) stencil = vtk.vtkImageStencil() if vtk.VTK_MAJOR_VERSION <= 5: stencil.SetInput(reader.GetOutput()) stencil.SetStencil(dataToStencil.GetOutput()) else: stencil.SetInputConnection(reader.GetOutputPort()) stencil.SetStencilConnection(dataToStencil.GetOutputPort()) stencil.ReverseStencilOn() stencil.SetBackgroundValue(500) # test again with a contour reader2 = vtk.vtkPNGReader() reader2.SetDataSpacing(0.8, 0.8, 1.5) reader2.SetDataOrigin(0.0, 0.0, 0.0) reader2.SetFileName("" + str(VTK_DATA_ROOT) + "/Data/fullhead15.png") plane = vtk.vtkPlane() plane.SetOrigin(0, 0, 0) plane.SetNormal(0, 0, 1) cutter = vtk.vtkCutter() if vtk.VTK_MAJOR_VERSION <= 5: cutter.SetInput(sphere.GetOutput()) else: cutter.SetInputConnection(sphere.GetOutputPort()) cutter.SetCutFunction(plane) stripper2 = vtk.vtkStripper() if vtk.VTK_MAJOR_VERSION <= 5: stripper2.SetInput(cutter.GetOutput()) else: stripper2.SetInputConnection(cutter.GetOutputPort()) dataToStencil2 = vtk.vtkPolyDataToImageStencil() if vtk.VTK_MAJOR_VERSION <= 5: dataToStencil2.SetInput(stripper2.GetOutput()) else: dataToStencil2.SetInputConnection(stripper2.GetOutputPort()) dataToStencil2.SetOutputSpacing(0.8, 0.8, 1.5) dataToStencil2.SetOutputOrigin(0.0, 0.0, 0.0) stencil2 = vtk.vtkImageStencil() if vtk.VTK_MAJOR_VERSION <= 5: stencil2.SetInput(reader2.GetOutput()) stencil2.SetStencil(dataToStencil2.GetOutput()) else: stencil2.SetInputConnection(reader2.GetOutputPort()) stencil2.SetStencilConnection(dataToStencil2.GetOutputPort()) stencil2.SetBackgroundValue(500) imageAppend = vtk.vtkImageAppend() if vtk.VTK_MAJOR_VERSION <= 5: imageAppend.SetInput(stencil.GetOutput()) imageAppend.AddInput(stencil2.GetOutput()) else: imageAppend.SetInputConnection(stencil.GetOutputPort()) imageAppend.AddInputConnection(stencil2.GetOutputPort()) viewer = vtk.vtkImageViewer() interator = vtk.vtkRenderWindowInteractor() if vtk.VTK_MAJOR_VERSION <= 5: viewer.SetInput(imageAppend.GetOutput()) else: viewer.SetInputConnection(imageAppend.GetOutputPort()) viewer.SetupInteractor(interator) viewer.SetZSlice(0) viewer.SetColorWindow(2000) viewer.SetColorLevel(1000) viewer.Render() interator.Start()