1

itk で nrrd ファイルを読み取り、vtk で表示しようとしています。しかし、itk を vtk に変換する際に問題があります。

import itk


file_name = '/home/yao/workspace/test/1.nrrd'
image_type = itk.Image[itk.UC, 2]
reader = itk.ImageFileReader[image_type].New()
reader.SetFileName( file_name )
reader.Update()

itk_vtk_converter = itk.ImageToVTKImageFilter[image_type].New()
itk_vtk_converter.SetInput(reader.GetOutput())
itk_vtk_converter.Update()

と私はメッセージを受け取りました

Traceback (most recent call last):   File "ex1.py", line 11, in <module>
    itk_vtk_converter = itk.ImageToVTKImageFilter[image_type].New()   File "/usr/lib/InsightToolkit/WrapITK/Python/itkLazy.py", line 14, in
__getattribute__
    value = types.ModuleType.__getattribute__(self, attr) AttributeError: 'LazyITKModule' object has no attribute 'ImageToVTKImageFilter'

私はitk3.20、python2.7を使用しています。どうすれば修正できますか?

よろしく。

ヤオ

4

4 に答える 4

1

C++ フィルター itk::ImageToVTKImageFilter はラップされていませんが、代わりにitk.VTKImageImportを使用できます。itkPyBuffer を使用して、itkImage を numpy 配列に変換できます

于 2012-10-24T14:39:40.073 に答える
0

ITK から VTk に直接試していないため、なぜ機能しないのかわかりませんが、このコードを使用して試すことができます。

def itkImageToVtk(image):
    arrayData = sitk.GetArrayFromImage(image)
    print arrayData.flags
    arrayDataC = np.array(arrayData[:,:,1], order='C')
    print arrayDataC.flags
    ArrayDicom = numpy_support.numpy_to_vtk(arrayDataC)

2D ITK イメージを 2D VTK に変換します。

于 2016-10-06T16:18:33.110 に答える
0

あなたのコードは正しいです。Python で itk を正しくビルドしていない可能性があると思います。私の意見では、Python で ITK/VTK を使用する最も簡単な方法は、Pythonxy を使用することです。あなたはそれを試すことができます。

于 2014-01-27T09:39:18.583 に答える