4

ITKラッパー(PythonXY 2.6.6.2から)でpython 2.6を使用しています。処理のために numpy/scipy から itk に 3D 画像を送信しようとしています。

import itk
imageType = itk.Image.F3
buf =  scipy.zeros( (100,100,100), dtype = float) 
itkImage = itk.PyBuffer[imageType].GetImageFromArray(buf)

GetImageFromArray() は次のエラーで失敗します:

RuntimeError: Contiguous array couldn't be created from input python object

ただし、バッファを自分で作成せずに ITK にイメージを作成させると、GetImageFromArray() が突然機能します。

import itk
imageType = itk.Image.F3
itkImage1 = imageType.New(Regions=[256, 256, 256])
buf = itk.PyBuffer[imageType].GetArrayFromImage(itkImage1)
itkImage2 = itk.PyBuffer[imageType].GetImageFromArray(buf)

GetImageFromArray() で受け入れられる numpy 配列を自分で作成するにはどうすればよいですか?

4

1 に答える 1

6

答えは簡単でした:

  • Python では、「float」は 64 ビット (c では​​倍精度) である可能性があります。
  • その中で、F3 は 32 ビットの浮動小数点数です。

ndarray に適切なタイプを指定すると、機能します。

import itk
imageType = itk.Image.F3
buf =  scipy.zeros( (100,100,100), dtype = numpy.float32)
itkImage = itk.PyBuffer[imageType].GetImageFromArray(buf)
于 2011-11-04T15:07:32.827 に答える