@jcfr Python 3.5を使用している場合、 imageoperations.py#L187に実装されているリサンプリングは機能しません。
sitk.ResampleImageFilterはuint32_t引数を受け入れます。 Python 2.7では、これはnp.int
を渡すことで正常に機能します。 ただし、Python 3では、これは機能しなくなりました。
例:
rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1, 2, 3], dtype='int'))
TypeError: in method 'ResampleImageFilter_SetSize', argument 2 of type 'std::vector< uint32_t,std::allocator< uint32_t > > const &'
Python2と3の両方でuint32_tになるのはどのnumpyタイプですか? np.uint32
でも同じエラーが発生します。
配列をarr = [int(x) for x in arr]
でPython int
に変換すると、問題は解決しますが、醜いです...
@haarburger 、頭を上げてくれてありがとう! この変換は以前は問題を引き起こしていました(そして「int」にキャストすることで修正しましたが、Python 3では機能しないようです)。 Python3と互換性を持たせるために調査します。 それまでの間、解決策を見つけた場合は、ご協力をお待ちしております。
np.array([1, 2, 3], dtype='int').tolist()
がそのトリックを行います。 すぐにPRを作成します。
rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1、2、3]、dtype ='int'))
TypeError:メソッド'ResampleImageFilter_SetSize'で、タイプ'std :: vector <uint32_t、std :: allocator <uint32_t >> const&'の引数2
np.array([1、2、3]、dtype ='int')。tolist()がトリックを実行します。 すぐにPRを作成します。
@blowekamp numpy配列をパラメーターとして直接理解するために、ラッピングレイヤーを改善することは理にかなっていますか?
numpy配列に符号なし整数型を使用してみます。
np.array([1, 2, 3], dtype='uint32')
Swigラッピングレイヤーはnumpy配列を理解します。 numpyの符号付き整数配列を符号なし配列タイプに暗黙的に変換しません。
2017年2月17日午後5時40分、Jean-ChristopheFillion- Robinnotifications @github.comは次のように書いています。
rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1、2、3]、dtype ='int'))
TypeError:メソッド'ResampleImageFilter_SetSize'で、タイプ'std :: vector <uint32_t、std :: allocator <uint32_t >> const&'の引数2np.array([1、2、3]、dtype ='int')。tolist()がトリックを実行します。 すぐにPRを作成します。
@blowekamp numpy配列をパラメーターとして直接理解するために、ラッピングレイヤーを改善することは理にかなっていますか?
—
あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。
@blowekamp実際、私が最初に試したのはnp.array([1, 2, 3], dtype='uint32')
でしたが、機能しません。
@haarburger 、「uint」も試してみましたか?
はい、どちらも機能しません。
私はさらに調査する必要があります。 SimpleITK Issueを作成し、問題が発生したSimpleITKバージョン、OS、PythonDistributeなどを含めてください。
SimpleITK 1.0rc1に同じ問題があるかどうかを確認しましたか?
@blowekampこの問題は1.0rc1でも発生します。
#205で解決
最も参考になるコメント
np.array([1, 2, 3], dtype='int').tolist()
がそのトリックを行います。 すぐにPRを作成します。