从numpy数组转换为itk图像

3
我有一个Numpy数组,想将其转换为ITK图像以进行进一步处理。如何在不使用PyBuffer扩展WrapITK的情况下完成此操作?我无法使用它,因为编译时会出现一堆错误:
.../ExternalProjects/PyBuffer/itkPyBuffer.txx: In static member function ‘static PyObject* itk::PyBuffer<TImage>::GetArrayFromImage(TImage*) [with TImage = itk::Image<float, 2u>]’:
.../ExternalProjects/PyBuffer/wrap_itkPyBufferPython.cxx:1397:   instantiated from here
.../ExternalProjects/PyBuffer/itkPyBuffer.txx:64: error: cannot convert ‘int*’ to ‘npy_intp*’ in argument passing

我需要一个关于如何修复编译错误或另一种转换Python对象的想法。


看起来你找到了答案,http://www.polyatomic.org/2010/10/28/doing-the-obvious/。你应该自己回答问题并接受它,或者删除问题,这样其他人就不会浪费时间了。顺便说一下,我发现这可能只是在64位系统上存在问题,因为`int`的大小不同。 - Justin Peel
由于npy_intp已经存在很长时间了,如果它是问题的话,我认为他们现在应该已经在ITK源代码中更改了它。我不可能是唯一遇到这个错误的人。 - tkerwin
不,我看到另外一个人也遇到了这个问题,但他们做了一些略微不同的事情——使用了另一种函数或类似的东西。 - Justin Peel
3个回答

2

只需更改

int dimensions[ ImageDimension ];

to

npy_intp dimensions[ ImageDimension ];

并重新编译。


1

你可能对最近正在进行的SimpleITK工作非常感兴趣。

在www.simpleitk.org上有很多信息。

源代码和大量文档可以在http://www.github.com/SimpleITK找到。


0

在你的ITK源代码树的Modules/External目录下克隆PyBuffer repository,然后在CMake配置中启用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接