从numpy数组转换为itk图像

3 投票
3 回答
2721 浏览
提问于 2025-04-16 06:12

我有一个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对象。

3 个回答

0

在你的ITK源代码目录下的Modules/External文件夹里,克隆一下PyBuffer这个项目。然后在你的CMake配置中把它启用。

1

你可能会对最近的SimpleITK项目感到很感兴趣。

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

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

2

只需要把

int dimensions[ ImageDimension ];

改成

npy_intp dimensions[ ImageDimension ];

然后重新编译一下就可以了。

撰写回答