【问题标题】:Use c# byte[] image data in vtk在 vtk 中使用 c# byte[] 图像数据
【发布时间】:2015-07-28 08:11:08
【问题描述】:

我正在使用 Kitware.VTK 工具包以 3d 显示 2d 图像。

我在字节 [] 中有图像。我想使用 vtkImageviewer 在 Kitware.VTK 的 renderviewcontrol 中显示它。我对VTK不太了解。

还有其他方法可以执行任务吗? 有人可以帮我吗?

【问题讨论】:

    标签: c# image 3d 2d vtk


    【解决方案1】:

    您可以将您的字节数组复制到 VTK 世界并创建一个 vktImageData 对象以将其用作 InputConnection

    vtkUnsignedCharArray myCharArray = vtkUnsignedCharArray.New();
    GCHandle myPinnedArray = GCHandle.Alloc(myByteArray, GCHandleType.Pinned);
    myCharArray.SetArray(myPinnedArray.AddrOfPinnedObject(), myData.Width * myData.Height * myData.Depth, 1);
    
    vtkImageData myVtkImageData = vtkImageData.New();
    myVtkImageData.GetPointData().SetScalars(myCharArray);
    myVtkImageData.SetScalarTypeToUnsignedChar();
    
    myVtkImageData.SetExtent(0, myData.Width - 1, 0, myData.Height - 1, myData.Depth -1);
    
    myVtkImageData.Update();
    

    myData 只是有关字节数组的图像尺寸的信息。您还应该确保GCHandlevtkImageData 对象没有被GC 清除。

    根据您的数据,可能需要设置OriginSpacing

    【讨论】:

    • 感谢 JohnnyQ!它有帮助。我在这里需要更多帮助。我有多个图像的字节数组,我想将它们转换为 3d vtkimage。可以通过将字节数据存储为 jpg 或 bmp 图像来完成,它们将这些图像系列作为 3d 加载到 vtk 中,但我不想存储图像,而只想将它们直接从数组转换为 3d vtkimage。
    • 您可以将数组合并为一个并将其用作输入数组,这样您就可以得到一个 3D 体积作为输出。
    • 嗨 JohnnyQ,我使用的是套件 vtk 5.6 版。 SetScalarTypeToUnsignedByte() 方法在其中不可用。通过使用其他类似的方法,我无法创建图像。我也不明白,如何合并图像数据数组。
    • 更正了我的意思是SetScalarTypeToUnsignedChar的代码。见http://stackoverflow.com/questions/59217/merging-two-arrays-in-net
    • 它仍然无法正常工作。你能给出完整的代码在 vtk 图像查看器中显示图像吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    相关资源
    最近更新 更多