2010-10-27 85 views
3

我有一個numpy數組,想將其轉換爲ITK圖像作進一步處理。如何在不使用WrapITK的PyBuffer擴展的情況下執行此操作。我不能使用編譯時,因爲我收到了一堆錯誤:從numpy數組轉到itk圖像

.../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/。你應該自己回答問題並接受它,或者只是刪除問題,這樣其他人就不會浪費時間。順便說一句,我確實發現,由於int的大小不同,它可能只是64位系統上的一個問題。 – 2010-10-28 05:00:12

+0

由於npy_intp已經存在很長時間了,我認爲如果問題出現,他們會在ITK源中改變它。我不能成爲唯一抵抗這個bug的人。 – tkerwin 2010-10-28 14:57:10

+0

不,我看到另外一個人遇到它,但他們做了一些稍微不同的事情 - 使用了替代功能或其他類似的東西。 – 2010-10-29 04:41:18

回答

2

只要改變

int dimensions[ ImageDimension ]; 

npy_intp dimensions[ ImageDimension ]; 

,並重新編譯。

1

您可能對最近發生的SimpleITK工作非常感興趣。

www.simpleitk.org有很多信息。

源代碼和許多文檔可以在http://www.github.com/SimpleITK找到。

0

克隆模塊/外部的ITK源代碼樹中的PyBuffer repository。然後在你的CMake配置中啓用它。