数据篇——numpy array数据转换为VTKImageData

numpy数据转为vtkImageData

numpy array是一个离散的三维空间数据场(离散体数据场),格式为三维数组,需把numpy数据转成vtk里可以用的格式:numpy array -> vtkIImageData。实现方法有两种:

方法一:numpy_to_vtk

首先介绍一下vtk.util.numpy_support的用法

numpy_to_vtk(num_array, deep=0, array_type=None)
# 将numpy数组转化为VTK数组,有三个参数    
# 参数一:这里的num_array必须是1维或2维数组,因此一般需用ravelflatten将3维数组平铺为1维数组。
# 参数二:deep一般设为1(True),采用deep——copy模式,避免内存问题。
# 参数三:array_type 数组数据类型 数据类型参考链接:C++数据类型和VTK里的数据类型_vtk.vtk_float数据类型-CSDN博客

下面是具体的数据转换代码,在这里我直接定义一个numpy_array2vtk_image(numpy_array)函数

对于3D array,可以用flatten或者ravel先转成1D array就可以使用了。这里的1D array得是C order(row-major order),最好使用deep copy(1)以免出现一些内存管理的问题。 

import vtk.util.numpy_support
def numpy_array2vtk_image(numpy_array):
    # vtkImageData中的数据全部都平铺成了一维数组,所以此处使用ravel()函数进行平铺处理
    vtk_data = numpy_support.numpy_to_vtk(np_array.ravel(), deep=1, array_type=vtk.VTK_DOUBLE)
    image_data = vtk.vtkImageData()

    # 设置meta信息
    image_data.SetDimensions(np_array.shape) #设置各维度尺寸
    image_data.SetSpacing([1, 1, 1])         #设置像素间距pixel spacing
    image_data.SetOrigin([0, 0, 0])          #设置原点
    # 设置数据信息
    image_data.GetPointData().SetScalars(vtk_data)

    return image_data

 方法二:vtkImageImport 

参考链接:Python VTK numpy数据3D可视化_numpy_to_vtk-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值