使用不带 FilePrefix 的 vtkVolume16Reader
Using vtkVolume16Reader without FilePrefix
我正在尝试可视化来自官方 VTK 存储库 example Medical3.py 之后的一系列 dicom 图像。我在 python 中找到的所有示例都使用 class vtkVolume16Reader,它需要定义的文件名模式 <%s>.<%d>。是不是说没有API阅读其他名字模式的图集了?
在 C++ 中,example ReadDICOMSeries 不需要特定的文件名模式。如果 Python wrapper 有一些类似的东西就好了。
基于 C++ ReadDICOMSeries 示例,我重写了使用 Observer 在切片之间移动的模拟(自定义 vtkInteractorStyleImage class 更好)。这是一个简单的示例,您从第 50 个切片开始,可以通过按 'k' 移动到第 60 个或通过按 'l' 移动到第 40 个:
import sys
import numpy as np
import vtk
PathDicomDir = "/path/to/dicom/dir"
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName(PathDicomDir)
reader.Update()
viewer = vtk.vtkImageViewer2()
viewer.SetInputData(reader.GetOutput())
viewer.SetSlice(50)
def Keypress(obj, event):
key = obj.GetKeySym()
if key == "e":
obj.InvokeEvent("DeleteAllObjects")
sys.exit()
elif key == "k":
viewer.SetSlice(60)
print("next")
elif key == "l":
print("prev")
viewer.SetSlice(40)
iren = vtk.vtkRenderWindowInteractor()
iren.AddObserver("KeyPressEvent", Keypress)
viewer.SetupInteractor(iren)
viewer.Render()
viewer.GetRenderer().ResetCamera()
viewer.Render()
iren.Start()
P.S。 运行上出现了两个windows。请让我知道如何删除其中之一。
我正在尝试可视化来自官方 VTK 存储库 example Medical3.py 之后的一系列 dicom 图像。我在 python 中找到的所有示例都使用 class vtkVolume16Reader,它需要定义的文件名模式 <%s>.<%d>。是不是说没有API阅读其他名字模式的图集了?
在 C++ 中,example ReadDICOMSeries 不需要特定的文件名模式。如果 Python wrapper 有一些类似的东西就好了。
基于 C++ ReadDICOMSeries 示例,我重写了使用 Observer 在切片之间移动的模拟(自定义 vtkInteractorStyleImage class 更好)。这是一个简单的示例,您从第 50 个切片开始,可以通过按 'k' 移动到第 60 个或通过按 'l' 移动到第 40 个:
import sys
import numpy as np
import vtk
PathDicomDir = "/path/to/dicom/dir"
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName(PathDicomDir)
reader.Update()
viewer = vtk.vtkImageViewer2()
viewer.SetInputData(reader.GetOutput())
viewer.SetSlice(50)
def Keypress(obj, event):
key = obj.GetKeySym()
if key == "e":
obj.InvokeEvent("DeleteAllObjects")
sys.exit()
elif key == "k":
viewer.SetSlice(60)
print("next")
elif key == "l":
print("prev")
viewer.SetSlice(40)
iren = vtk.vtkRenderWindowInteractor()
iren.AddObserver("KeyPressEvent", Keypress)
viewer.SetupInteractor(iren)
viewer.Render()
viewer.GetRenderer().ResetCamera()
viewer.Render()
iren.Start()
P.S。 运行上出现了两个windows。请让我知道如何删除其中之一。