问题描述
我正在尝试获取从3-D numpy
数组生成的一些VTK图像数据,并将其转换为多边形数据,以便可以由仅以.vtp作为输入格式的包读取。我选择使用行进立方体算法将我的点/节点数据作为输入,并将多边形数据作为输出。数据被分为两个阶段(0 =黑色,255 =白色),因此仅需要一个轮廓。我尝试使用vtkPolyDataReader
类为vtkMarchingCubes
类创建一个对象,然后使用vtkPolyDataWriter
提取轮廓行进的多维数据集对象并将其另存为VTP文件:
import vtk
input = 'mydata.vti'
reader = vtk.vtkPolydataReader()
reader.SetFileName(input)
reader.Update()
contour = vtk.vtkMarchingCubes()
contour.SetInputConnection(reader.GetOutputPort())
contour.SetValue(0,128.)
contour.Update()
writer = vtk.vtkPolyDataWriter()
writer.SetInputData(contour.GetOutput())
writer.SetFileName('mydata.vtp')
writer.Update()
writer.Write()
运行代码时,它花费的时间比应该花费的时间少得多(输入文件大约2 GB),并且代码创建的VTP文件不到1 KB。我一直在用力撞墙,仔细查看VTK文档和一些提供的示例,但我不知道自己做错了什么。
解决方法
要读取.vtki文件,您需要使用vtk.vtkXMLImageDataReader。您正在尝试使用vtk.vtkPolyDataReader读取图像文件,该文件旨在读取曲面网格。