将VTK图像(.vti)数据转换为VTK多边形(.vtp)数据

2024-05-12 19:49:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获取一些从3-D numpy数组生成的VTK图像数据,并将其转换为poly数据,这样它就可以被只使用.vtp作为输入格式的包读取。我选择使用marching cubes算法将我的点/节点数据作为输入,并将多边形数据作为输出。数据分为两个阶段(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()

当我运行代码时,它所花费的时间比它应该花费的要少得多(输入文件大约为2GB),并且代码创建的VTP文件小于1KB。我一直在为此而头痛,仔细阅读VTK文档和提供的一些示例,但我不知道我做错了什么


Tags: 文件数据对象inputupdatereaderwriter轮廓