【发布时间】:2015-07-28 08:11:08
【问题描述】:
我正在使用 Kitware.VTK 工具包以 3d 显示 2d 图像。
我在字节 [] 中有图像。我想使用 vtkImageviewer 在 Kitware.VTK 的 renderviewcontrol 中显示它。我对VTK不太了解。
还有其他方法可以执行任务吗? 有人可以帮我吗?
【问题讨论】:
我正在使用 Kitware.VTK 工具包以 3d 显示 2d 图像。
我在字节 [] 中有图像。我想使用 vtkImageviewer 在 Kitware.VTK 的 renderviewcontrol 中显示它。我对VTK不太了解。
还有其他方法可以执行任务吗? 有人可以帮我吗?
【问题讨论】:
您可以将您的字节数组复制到 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 只是有关字节数组的图像尺寸的信息。您还应该确保GCHandle 和vtkImageData 对象没有被GC 清除。
根据您的数据,可能需要设置Origin 和Spacing。
【讨论】:
SetScalarTypeToUnsignedChar的代码。见http://stackoverflow.com/questions/59217/merging-two-arrays-in-net