[Insight-users] Passing ITK objects from Python to C code of a Python extension

Sven Prevrhal sven.prevrhal at radiology.ucsf.edu
Fri Jun 22 12:39:42 EDT 2007


Gaëtan,

I found the itk examples on darcs - great collection! However, I could not
find code using DICOMSeriesFileNames or any other class method that returns
a vector of strings. 

Does itk.DICOMSeriesFileNames work with WrapITK? I am having difficulties
understanding how the GetSeriesUIDs method that's supposed to return a
vector of strings needs an argument in Python and what I should supply. If I
simply supply an integer or string variable, the method returns a list of
strings that look like names of swig pointers:

_44649507_p_std__vectorTstd__basic_stringTchar_std__char_traitsTchar_t_std__
allocatorTchar_t_t_std__allocatorTstd__basic_stringTchar_std__char_traitsTch
ar_t_std__allocatorTchar_t_t_t_t

What do I need to do? Do I need to write my own ExternalProject at this
point :)?

Thanks,
Sven

-----Original Message-----
From: Sven Prevrhal [mailto:sven.prevrhal at radiology.ucsf.edu] 
Sent: Wednesday, June 20, 2007 12:58 PM
To: 'Gaëtan Lehmann'
Subject: RE: [Insight-users] Passing ITK objects from Python to C code of a
Python extension

Thanks Gaëtan,
Will WrapITK work on Win XP? I saw some warnings. Also, where do I find the
insight journal archives?

 
Thanks,
Sven

-----Original Message-----
From: Gaëtan Lehmann [mailto:gaetan.lehmann at jouy.inra.fr] 
Sent: Wednesday, June 20, 2007 12:23 PM
To: Sven Prevrhal
Cc: insight-users at itk.org
Subject: Re: [Insight-users] Passing ITK objects from Python to C code of a
Python extension


Hi Sven,

You should use WrapITK to do that. Extending WrapITK is very easy in  
python, and you can find several examples in the ExternalProjects  
directory, and in my contributions to the insight journal.

Regards,

Gaëtan


Le 20 juin 07 à 04:32, Sven Prevrhal a écrit :

> Since there are apparently some issues with converting strings and  
> vectors
> of strings to/from Python and ITK and I have not figured out how  
> to, from
> Python,
> 	- use DICOMSeriesFileNames to get a set of file names pertaining to
> one SeriesUID
> 	- read it with ImageSeriesReader
> 	- Use ConnectITKToVTK to transfer the images over to VTK for
> visualization
>
> I thought I would write a Python extension that would accept a  
> SeriesUID,
> execute those steps and return a vtkImageData object to Python for  
> further
> processing. But I fail to figure out how to pass an ITK object to my
> Python/C code.
>
> I was thinking something like this for Python extension .cxx file -
>
> static PyObject *
> PyITKHelloWorld_ITKHelloWorld(PyObject *self, PyObject *args)
> {
> 	ImageType::Pointer argImage;
> 	PyObject * arg1;
>
>     if (!PyArg_ParseTuple(args, "O", &arg1))
>         return NULL;
> 	
> 	// THIS LINE DOES NOT COMPILE
> 	argImage= (itk::Image< unsigned short, 3 >::Pointer) arg1;
> ...
>
>
> and in Python,
>
> im = itkImageUS3_New()
> PyITKHelloWorld.ITKHelloWorld(im.GetPointer())
>
> ...
>
>
> Needless to say, the code does not compile (can import my extension  
> though,
> and I have a very simple method without passing an ITK object that  
> works
> just fine, so the basics are OK). Am I completely off? Or what do I  
> need to
> do?
>
> Thanks!
>
> Sven
>
>
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users

--
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr








More information about the Insight-users mailing list