参考:
https://blog.csdn.net/haoweibo111/article/details/120592172
使用python读取vti文件
读取vti文件信息
import vtk
reader = vtk.vtkXMLImageDataReader()
reader.SetFileName("junyunjiezhi1.vti")
reader.Update()
image = reader.GetOutput()
print(image)
1
2
3
4
5
6
7
返回结果示例:
vtkImageData (000001F02779FD80)
Debug: Off
Modified Time: 314
Reference Count: 2
Registered Events: (none)
Information: 000001F02A56DF10
Data Released: False
Global Release Data: Off
UpdateTime: 315
Field Data:
Debug: Off
Modified Time: 261
Reference Count: 1
Registered Events: (none)
Number Of Arrays: 0
Number Of Components: 0
Number Of Tuples: 0
Number Of Points: 1003002
Number Of Cells: 500000
Cell Data:
Debug: Off
Modified Time: 300
Reference Count: 1
Registered Events:
Registered Observers:
vtkObserver (000001F02A521990)
Event: 33
EventName: ModifiedEvent
Command: 000001F02A56DD30
Priority: 0
Tag: 1
Number Of Arrays: 3
Array 0 name = Material
Array 1 name = Sources_PML
Array 2 name = Receivers
Number Of Components: 3
Number Of Tuples: 500000
Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 1 1 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 1 1 1 1 )
Pass Through Flags: ( 1 1 1 1 1 1 1 1 1 1 1 )
Scalars:
Debug: Off
Modified Time: 292
Reference Count: 1
Registered Events: (none)
Name: Material
Data type: unsigned int
Size: 500000
MaxId: 499999
NumberOfComponents: 1
Information: 0000000000000000
Name: Material
Number Of Components: 1
Number Of Tuples: 500000
Size: 500000
MaxId: 499999
LookupTable: (none)
Vectors: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none)
Tangents: (none)
RationalWeights: (none)
HigherOrderDegrees: (none)
Point Data:
Debug: Off
Modified Time: 271
Reference Count: 1
Registered Events:
Registered Observers:
vtkObserver (000001F02A521360)
Event: 33
EventName: ModifiedEvent
Command: 000001F02A56DD30
Priority: 0
Tag: 1
Number Of Arrays: 0
Number Of Components: 0
Number Of Tuples: 0
Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 1 1 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 1 1 1 1 )
Pass Through Flags: ( 1 1 1 1 1 1 1 1 1 1 1 )
Scalars: (none)
Vectors: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none)
Tangents: (none)
RationalWeights: (none)
HigherOrderDegrees: (none)
Bounds:
Xmin,Xmax: (0, 2)
Ymin,Ymax: (0, 1)
Zmin,Zmax: (0, 0.002)
Compute Time: 328
Spacing: (0.002, 0.002, 0.002)
Origin: (0, 0, 0)
Direction: (1, 0, 0, 0, 1, 0, 0, 0, 1)
Dimensions: (1001, 501, 2)
Increments: (0, 0, 0)
Extent: (0, 1000, 0, 500, 0, 1)
Process finished with exit code 0
import vtkmodules.all as vtk
def get_program_parameters():
import argparse
description = 'Read a VTK image data file.'
epilogue = ''''''
parser = argparse.ArgumentParser(description=description, epilog=epilogue,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('--filename', help='junyunjiezhi1.vti')#注意这里filename前面两个-,之前我找到的代码没有这个-,会报错,根据其他关于parser报错的文章改的,可以正常运行了,但我并不知道原理
#经查,该段程序是在命令行运行py文件时向函数传递参数用的,因此在下面main中直接写入参数,该段代码就用不上了。
args = parser.parse_args()
return args.filename
def main():
colors = vtk.vtkNamedColors()
file_name = get_program_parameters()#如果你在下面reader.SetFileName中直接为file_name赋值,该行就用不上了
# Read the source file.
reader = vtk.vtkXMLImageDataReader()
reader.SetFileName(file_name)#这里的filename替换成你要读取的文件名,如reader.SetFileName("test.vti")
# Create the mapper that creates graphics elements
mapper = vtk.vtkDataSetMapper()
mapper.SetInputConnection(reader.GetOutputPort())
# Create the Actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)
# show the edges of the image grid
actor.GetProperty().SetRepresentationToWireframe()
# Create the Renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.ResetCamera()
renderer.SetBackground(colors.GetColor3d('Silver'))
# Create the RendererWindow
renderer_window = vtk.vtkRenderWindow()
renderer_window.AddRenderer(renderer)
renderer_window.SetWindowName('ReadImageData')
# Create the RendererWindowInteractor and display the vti file
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderer_window)
interactor.Initialize()
interactor.Start()
if __name__ == '__main__':
main()