[Insight-users] GDCMImageIO with (wx)Windows App

Mathieu Malaterre mathieu.malaterre at kitware.com
Mon Jul 24 13:14:55 EDT 2006


Derek,

	This is just a shot in the dark, but did you read the FAQ for wxGTK:

Why doesn't reading floating point numbers work when using wxWidgets?
If your program reads the floating point numbers in the format 123.45 
from a file, it may suddenly start returning just 123 instead of the 
correct value on some systems -- which is all the more mysterious as the 
same code in a standalone program works just fine.

The explanation is that GTK+ changes the current locale on program 
startup. If the decimal point character in the current locale is not the 
period (for example, it is comma in the French locale), all the standard 
C functions won't recognize the numbers such as above as floating point 
ones any more.

The solution is to either use your own function for reading the floating 
point numbers (probably the best one) or to call setlocale(LC_NUMERIC, 
"C") before reading from file and restore the old locale back afterwards 
if needed.

http://wxwidgets.org/docs/faqgtk.htm#locale



HTH
Mathieu

Derek Magee wrote:
> I'm trying to load a DICOM file using itk (in a wxWindows application, 
> i.e. jsut a standard windows app). The code works under linux, and in a 
> terminal app under windows (MSVC.net), but not within a GUI app 
> (wxWindows) The code is:
> 
>        typedef itk::Image< short, 2 > XImageType;
>        typedef itk::ImageFileReader< XImageType > XReaderType;
>        typedef itk::GDCMImageIO XImageIOType;
> 
>        XReaderType::Pointer Xreader = XReaderType::New();
> 
>        XImageIOType::Pointer XdicomIO = XImageIOType::New();
>        Xreader->SetFileName( "E:\\DICOM\\41A6F3CD.DCM" );
>        Xreader->SetImageIO( XdicomIO );
> 
>        try
>        {
>            Xreader->Update();
>        }
>        catch (itk::ExceptionObject &ex)
>        {
>            cerr << "Read error" << endl ;
>        }
>        catch(...)
>        {
>            wxString er ;
>            er.Printf("Unknown read error E:\\DICOM\\41A6F3CD.DCM") ;
>            wxLogError(er) ;
>        }
> 
> The "Unknown read error" exception  is caught. This seems to relate to 
> the dynamic cast in itkImageFileReader.txx:
> 
> template <class TOutputImage, class ConvertPixelTraits>
> void
> ImageFileReader<TOutputImage, ConvertPixelTraits>
> ::EnlargeOutputRequestedRegion(DataObject *output)
> {
>  typename TOutputImage::Pointer out = dynamic_cast<TOutputImage*>(output);
> 
> (I'm using itk 2.0.1, but I tried 2.8.1 on another computer and the 
> exception is still there)
> 
> Any ideas???
> 
> Thanks
> 
> Derek
> 
> _________________________________________________________________
> The new MSN Search Toolbar now includes Desktop search! 
> http://join.msn.com/toolbar/overview
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 



More information about the Insight-users mailing list