PolyDataToImageDataStencil
VTKExamples/Python/PolyData/PolyDataToImageDataStencil
Description¶
- Contributed by: Peter Gruber
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()