如何编写一个ProgrammableSource过滤器,在ParaView中将numpy数组显示为vtkImageData?

2024-09-30 14:37:42 发布

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

因此,我不想将我们拥有的每一个数据以另一种格式存储以使其可以通过ParaView显示,我想使用ParaView提供的python接口直接从当前的文件格式加载数据并显示出来。在

为了测试这一点,我想创建一个简单的ProgrammableSource过滤器,它输出vtkImageData并用一些数据填充它。在

我遇到了三个问题:

  • 不显示为偶数(不显示为第一个轮廓)
  • 我找不到一种不循环设置值的方法
  • 我没有找到一个好的在线资源可以帮助我

这是我到目前为止的情况。没有来自ParaView的投诉,但也没有任何结果。在

import numpy as np
import vtk
import vtk.util.numpy_support as ns

img = self.GetImageDataOutput()
img.SetDimensions(3,4,5)
img.AllocateScalars(vtk.VTK_DOUBLE, 1)


dims = img.GetDimensions()
img.SetOrigin(0,0,0)
img.SetSpacing(0.55, 0.55, 0.55)

for z in range(dims[2]):
  for y in range(dims[1]):
    for x in range(dims[0]):
      img.SetScalarComponentFromDouble(x,y,z,0, 1.0*x*y*z)

注意:如果直接使用ParaView的pythonshell而不是ProgrammableSource更容易,这也没问题。在


Tags: 数据inimportnumpy过滤器imgforas
1条回答
网友
1楼 · 发布于 2024-09-30 14:37:42

为了用可编程源定义vtkImageData输出,还必须在管道执行的RequestInformation阶段设置一些信息。在Script (RequestInformation)属性中插入以下内容:

from paraview import util

op = self.GetOutput()
util.SetOutputWholeExtent(self, [0, 2, 0, 3, 0, 4])

此信息改编自http://www.paraview.org/Wiki/Python_Programmable_Filter上的可用信息。在

相关问题 更多 >