有没有一种方法使用vtk从一个剖切面(可以是倾斜的)的3D坐标和相关数据中获得2D图像吗?在
以下是我读取结构化网格并设置剖切面的代码片段:
self._reader = vtk.vtkXMLStructuredGridReader()
self._reader.SetFileName(filename)
self._reader.Update()
self._reader.GetOutput().GetPointData().SetActiveScalars("Intensity")
plane = vtk.vtkPlane()
plane.SetOrigin(self._reader.GetOutput().GetCenter())
plane.SetNormal(0, 0, 1)
planeCut = vtk.vtkCutter()
planeCut.SetInput(self._reader.GetOutput())
planeCut.SetCutFunction(plane)
# THIS GIVES THE 3D COORDINATES OF THE POINTS OF THE CUT PLANE
print planeCut.GetOutput().GetPoints()
# THIS GIVES THE DATA ASSOCIATED WITH EACH OF THE POINTS
planeCut.GetOutput().GetPointData().GetAttribute(0)
cutMapper = vtk.vtkPolyDataMapper()
cutMapper.SetInputConnection(planeCut.GetOutputPort())
cutMapper.SetLookupTable(table)
cutMapper.SetScalarRange(0,100)
cutActor = vtk.vtkActor()
cutActor.SetMapper(cutMapper)
self._renderer.AddActor(cutActor)
self._iren.Render()
非常感谢你的帮助
埃里克
vtkCutter生成vtkPolyData输出。你要的是vtkImageReslice。在
创建一个vtkimagerslice对象,一个vtkTransform用作它的参数,设置图像作为它的输入,就完成了。如果要更改切片,请适当修改变换并更新或渲染。在
像这样:
注意:SetInput在VTK 6.0+中不推荐使用。对于新代码,请使用first.SetInputConnection(其他.GetOutputPort())或first.SetInputData(data)(如果您已经在6,否则,第二个表单仍然first.SetInput(数据)您将不得不稍后移植)。SetInputConnection创建一个算法连接-即,如果在使用者上调用Update(),则生产者也将自动更新,依此类推。如果使用第二种形式,在5.x中,它也会创建一个算法连接,但在6中,它没有。你必须手动调用每个算法的更新。在
基本上,在连接两个vtKalgorithm或映射器时使用SetInputConnection。在
相关问题 更多 >
编程相关推荐