我正在尝试可视化来自官方VTK存储库的example Medical3.py之后的一系列dicom图像。我在python中找到的所有示例都使用类 vtkVolume16Reader ,该类期望定义的文件名模式<%s>。<%d>。这是否意味着没有用于读取具有其他名称模式的图像系列的API?
在C ++中,example ReadDICOMSeries不需要特定的文件名模式。如果Python包装器具有某些类似物,那就太好了。
答案 0 :(得分:0)
基于C ++ ReadDICOMSeries示例,我使用Observer在切片之间移动来重写了模拟(最好自定义vtkInteractorStyleImage类)。这是一个简单的示例,您从第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。运行中会出现两个窗口。请让我知道如何删除其中一个。