2010-10-27 2 views
3

У меня есть массив numpy и вы хотите преобразовать его в изображение ITK для дальнейшей обработки. Как это сделать, не используя расширение PyBuffer для WrapITK. Я не могу использовать, потому что я получаю кучу ошибок при компиляции:Переход от массива numpy к itk Image

.../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.

+0

Похоже, вы нашли ответ, http://www.polyatomic.org/2010/10/28/doing-the-obvious/. Вероятно, вы должны либо ответить на вопрос самостоятельно, либо принять его, либо просто удалить вопрос, чтобы другие люди не тратили на него время. Кстати, я обнаружил, что это, вероятно, проблема только в 64-битных системах из-за разницы в размере 'int'. –

+0

Поскольку npy_intp существует так долго, я решил, что теперь они изменили бы его в источнике ITK, если бы это была проблема. Я не могу быть единственным человеком, который бы выступил против этой ошибки. – tkerwin

+0

Нет, я видел другого человека, который наткнулся на него, но они сделали что-то немного другое - использовали альтернативную функцию или некоторые такие. –

ответ

2

Просто измените

int dimensions[ ImageDimension ]; 

в

npy_intp dimensions[ ImageDimension ]; 

и перекомпилировать.

1

Возможно, вас очень заинтересовала недавняя работа SimpleITK, которая происходит.

Существует много информации на сайте www.simpleitk.org.

Исходный код и большая документация могут быть найдены по адресу http://www.github.com/SimpleITK.

0

Клонировать PyBuffer repository в исходном дереве ITK в модулях/внешнем. Затем включите его в конфигурации CMake.