ash*_*kim 5 python arrays numpy vtk
我想将.VTK ASCII多数据文件转换为仅点坐标的numpy数组。我首先尝试了这个方法:https : //stackoverflow.com/a/11894302,但是它存储了(3,3)numpy数组,其中每个条目实际上是构成该特定单元格(在这种情况下为三角形)的三个点的坐标。但是,我不需要像元,我想要每个点的坐标(无重复)。接下来,我尝试了一下:https : //stackoverflow.com/a/23359921/6619666,进行了一些修改。这是我的最终代码。值不是numpy数组,而是存储为元组,但是我不确定该元组是否代表每个点。
import sys
import numpy
import vtk
from vtk.util.numpy_support import vtk_to_numpy
reader = vtk.vtkPolyDataReader()
reader.SetFileName('Filename.vtk')
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
reader.Update()
nodes_vtk_array= reader.GetOutput().GetPoints().GetData()
print nodes_vtk_array
Run Code Online (Sandbox Code Playgroud)
请给个建议。
小智 5
您可以像这样从多边形数据对象获取点坐标:
polydata = reader.GetOutput()
points = polydata.GetPoints()
array = points.GetData()
numpy_nodes = vtk_to_numpy(array)
Run Code Online (Sandbox Code Playgroud)
您可以使用dataset_adapter
从vtk.numpy_interface
:
from vtk.numpy_interface import dataset_adapter as dsa
polydata = reader.GetOutput()
numpy_array_of_points = dsa.WrapDataObject(polydata).Points
Run Code Online (Sandbox Code Playgroud)
来自Kitware博客:
可以通过这种方式访问PointData,CellData,FieldData,Points(仅vtkPointSet的子类),多边形(仅vtkPolyData)。