2010-10-27 6 views
3

J'ai un tableau numérique et je veux le convertir en une image ITK pour un traitement ultérieur. Comment faire ceci sans utiliser l'extension PyBuffer à WrapITK. Je ne peux pas l'utiliser parce que je reçois un tas d'erreurs lors de la compilation:Passage d'un tableau numpy à un 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 

je pourrais utiliser une idée sur la façon de corriger soit les erreurs de compilation ou d'une autre façon de convertir mes objets python.

+0

Il semble que vous ayez trouvé la réponse, http://www.polyatomic.org/2010/10/28/doing-the-obvious/. Vous devriez probablement soit répondre à la question vous-même et l'accepter, ou simplement supprimer la question afin que les autres personnes ne perdent pas de temps dessus. En passant, j'ai trouvé que c'est probablement un problème sur les systèmes 64 bits en raison de la différence de taille de 'int'. –

+0

Depuis que npy_intp existe depuis si longtemps, j'ai pensé qu'ils l'auraient changé dans la source ITK maintenant si c'était le problème. Je ne peux pas être la seule personne à venir contre ce bug. – tkerwin

+0

Non, j'ai vu une autre personne qui est tombée dessus, mais ils ont fait quelque chose de légèrement différent - utilisé une fonction alternative ou autre. –

Répondre

2

il suffit de changer

int dimensions[ ImageDimension ]; 

à

npy_intp dimensions[ ImageDimension ]; 

et recompiler.

1

Vous pouvez être très intéressé par le travail récent de SimpleITK.

Il y a beaucoup d'informations sur www.simpleitk.org.

Le code source et beaucoup de documentation peuvent être trouvés à http://www.github.com/SimpleITK.

0

Clonez le PyBuffer repository dans votre arborescence de sources ITK à l'adresse Modules/External. Activez-le ensuite dans votre configuration CMake.

Questions connexes