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

问题描述

我正在尝试获取从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读取图像文件,该文件旨在读取曲面网格。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...