我正在将VTK统一网格读入python。当我在Paraview中可视化一个切片时,我得到了以下(正确的)图像:
{1美元^
然后,我使用以下脚本通过numpy&pylab可视化切片:
import vtk
from vtk.util.numpy_support import vtk_to_numpy
import pylab
imr=vtk.vtkXMLImageDataReader()
imr.SetFileName('flow.vti')
imr.Update()
im=imr.GetOutput()
nx,ny,nz=im.GetDimensions()
orig=im.GetOrigin()
extent=im.GetExtent()
spacing=im.GetSpacing()
flowVtk=im.GetPointData().GetArray("|flow|")
flow=vtk_to_numpy(flowVtk).reshape(nx,ny,nz)
# bottom z-slice
flowZ0=flow[:,:,0]
# set extent so that axes units are physical
img=pylab.imshow(flowZ0,extent=[orig[0],orig[0]+extent[1]*spacing[0],orig[1],orig[1]+extent[3]*spacing[1]],cmap=pylab.gray())
img.set_clim(vmin=0,vmax=1000)
pylab.show()
看起来不太协调。我尝试在reshape(...)
中重新排序维度,它做了一些事情,但它从未显示它实际应该显示的数据。在
有明显的问题吗?在
编辑:我也尝试了reshape((nx,ny,nz),order="F")
(fortran排序),现在我得到了一个更好的图像(使用jet colormap以获得更好的清晰度),这几乎是正确的,但是数据被可疑地旋转了90°,另外,我还想得到一些权威性的解释,说明使用哪个命令以及为什么(VTK内部使用哪个命令?)。在
EDIT2:为了获得与Paraview中相同的视图,我不得不做pylab.imshow(np.rot90(flowZ0))
;不知道为什么,所以问题仍然悬而未决:
目前没有回答
相关问题 更多 >
编程相关推荐