在vtk中使用c# byte[]图像数据
Use c# byte[] image data in vtk
我正在使用 Kitware.VTK 工具包在 3d 中显示 2d 图像。
我在 byte[] 中有图像。我想使用 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
。
我正在使用 Kitware.VTK 工具包在 3d 中显示 2d 图像。
我在 byte[] 中有图像。我想使用 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
。