[Insight-users] Image reader problem
Charles Knox
knoxcharles at qwest.net
Mon May 5 17:17:52 EDT 2008
Thanks Bill and Niels,
I ran itkGDCMImageIOTest in debugging mode (after hard coding in some
file names) and it runs fine! I can step into ITK code and see the file
names being saved. Both ITK and my software are compiled using the
_MBCS option (multi-byte character strings), so I don't think it's a
problem with multi-byte characters, although am still looking at this.
Does ITK support Unicode or MBCS? I don't know.
So, as of now, I'm stumped.
Regards,
Charlie
Bill Lorensen wrote:
> Charles,
>
> Do the tests in Insight/Testing/Code/IO run OK?
>
> We don't have any VS 9.0 platforms in our testing suite unfortunately.
>
> Bill
>
> On Mon, May 5, 2008 at 12:37 PM, Charles Knox <knoxcharles at qwest.net> wrote:
>
>> The function ReadDICOMImage() gets called to test for/read a DICOM image
>> file.
>> It has worked consistently for me through ITK versions 1.x through 3.4 when
>> compiled
>> with MS Visual C++ 6.0. But now, when compiling with MS Visual Studio v9.0
>> for
>> x86 and under Windows Vista, the debugger traps an access violation from the
>> destructor ~ImageSource() (located in file itkImageSource.h).
>>
>> -----------------------------------------------------------------------------------
>>
>> BOOL CImageData::ReadDICOMImage( CString &csFileName, IMAGEPARAMS &iParam )
>> {
>> // First check for a DICOM file.
>> itk::GDCMImageIO::Pointer gdcmIO = itk::GDCMImageIO::New();
>>
>> // This works but commented out to get to 'reader'
>> //if (!gdcmIO->CanReadFile((LPCTSTR)csFileName)
>> // return FALSE;
>>
>> typedef signed short PixelType;
>> // Set dimensions to 3 to have reader return z-value
>> const UINT Dimension = 3;
>> typedef itk::Image< PixelType, Dimension > ImageType;
>> typedef itk::ImageFileReader< ImageType > ReaderType;
>>
>> ReaderType::Pointer reader = ReaderType::New();
>>
>> reader->SetFileName( (LPCTSTR)csFileName);
>> reader->SetImageIO( gdcmIO );
>>
>> // Return prematurely to invoke 'reader' destructor
>> // when going out of scope.
>> return FALSE;
>>
>> try {
>> reader->Update();
>> } catch (std::exception &err) {
>> string msg = err.what();
>> AfxMessageBox(msg.c_str());
>> return FALSE;
>> }
>>
>> ...
>> ---------------------------------------------------------------------------
>>
>> Debugger stops at the destructor ~ImageSource()
>>
>> ...
>> * SmartPointer to a DataObject. If a subclass of ImageSource has
>> * multiple outputs of different types, then that class must provide
>> * an implementation of MakeOutput(). */
>> virtual DataObjectPointer MakeOutput(unsigned int idx);
>>
>> protected:
>> ImageSource();
>> virtual ~ImageSource() {} <- Debugger stops here
>>
>> /** A version of GenerateData() specific for image processing
>> * filters. This implementation will split the processing across
>> * multiple threads. The buffer is allocated by this method. Then
>> ...
>>
>> _______________________________________________
>> 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