Hi Miri,

by removing the templating of the function you know which kind of data will be 
used, but on the other hand it will now only work with that exact data type 
given and no other. Which the compiler does try to tell you with that message.

I really do suggest taking the time to read up on templates. It is a rather 
complex, but on the other hand very powerful tool that is used heavily by ITK 
and other toolkits. Explaining this in an email might not quite be the right 
medium, but there is excellent literature and tutorials out there, as people 
often tend to struggle with the finer point of templates.

To give you a few pointers, you might want to look at:

Wiki on templates:
http://en.wikipedia.org/wiki/Template_%28programming%29

A longer tutorial on the subject:
http://www.iis.sinica.edu.tw/~kathy/vcstl/templates.htm

Short review by the ITK crew:
http://www.vialab.org/methods_course/Lectures/itk_lecture2_cppreview.ppt
(slide 22 and following)

Knowing how to use templates will save you a lot of work and time in the long 
run.

Regards,
Caspar

Von: Miri Trope [mailto:[email protected]]
Gesendet: Freitag, 28. Oktober 2011 18:54
An: Goch, Caspar Jonas
Cc: mitk-users
Betreff: Re: [mitk-users] Changing image type

Thank you for your answer.
I took your advise and compiled:

void AddFilter(itk::Image <unsigned char, 3>* image, mitk::Image::Pointer 
outputImage)
{...}

 but I got some errors like this one:
..\..\..\..\MITK_myProjects\Modules\MyModuleLib\myFilter.cpp(78) : error C2664: 
'AddFilter' : cannot convert parameter 1 from 
'itk::Image<TPixel,VImageDimension> *' to 'itk::Image<TPixel,VImageDimension> *'
1>        with
1>        [
1>            TPixel=int,
1>            VImageDimension=2
1>        ]
1>        and
1>        [
1>            TPixel=unsigned char,
1>            VImageDimension=3
1>        ]
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, 
C-style cast or function-style cast



On Fri, Oct 28, 2011 at 1:08 PM, Goch, Caspar Jonas 
<[email protected]<mailto:[email protected]>> wrote:
Hi Miri,

I am not entirely sure, where you are trying to switch to a specific datatype, 
but if you want to use it with a specific one you enter the datatype, just like 
in itk::Image< float, 3 > for a three dimensional itk Image using floats. If 
you are asking about defining the function for a specific datatype, you can 
just get rid of the parameter and define it like

template< unsigned int VImageDimension>
void AddFilter(itk::Image<float, VImageDimension>* image, mitk::Image::Pointer 
outputImage)

or even get rid of templating altogether

void AddFilter(itk::Image<float, 3>* image, mitk::Image::Pointer outputImage)


In any case, you might want to read further into the usage of templates as for 
example here http://www.cplusplus.com/doc/tutorial/templates/ .

Regards,
Caspar

Von: Miri Trope [mailto:[email protected]<mailto:[email protected]>]
Gesendet: Freitag, 28. Oktober 2011 12:24
An: mitk-users
Betreff: [mitk-users] Changing image type

Hi All,

I have some questions:

1. The example of template on web (awesomeFilter) gets the image type as is by 
typename

templaye<typename TPixel, unsigned int VImageDimension>
void AddFilter(itk::Image<TPixel, VImageDimension>* image, mitk::Image::Pointer 
outputImage)
{...}
 ,thus if I want to change the image type, I need to use the filter: 
itk::castingFilter. How can I get the image as any type that I want and avoid 
the casting afterwards? My intuition is telling me that it should be something 
like that:
typename<float TPixel, unsigned int VImageDimension>
but that returns errors...

2. It's really necessary to add the cpp files in the cmake file: 
moduls\MyModuleLib\files.cmake like that:

set (CPP_FILES
myCppFile1.cpp
myCppFile2.cpp)
...
I think that when I don't add that, it doesn't matter the result.


Thanks!

------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to