使用python读取vti文件

使用python读取vti文件

读取vti文件信息

import vtk

reader = vtk.vtkXMLImageDataReader()
reader.SetFileName("junyunjiezhi1.vti")
reader.Update()
image = reader.GetOutput()
print(image)

返回结果示例:

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

显示vti图片

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()
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值