ITK读取图像:无法创建IO对象

时间:2012-12-12 11:55:25

标签: itk

我正在使用ITK 4.2和Qt Creator。

尝试阅读几张图片,我总是这样:

  

itk :: ImageFileReaderException(0x1efccb0)   位置:“void itk :: ImageFileReader :: GenerateOutputInformation()[with TOutputImage = itk :: Image; ConvertPixelTraits = itk :: DefaultConvertPixelTraits]”

     

文件:/usr/local/include/ITK-4.2/itkImageFileReader.hxx   行:143

     

说明:无法为文件/home/marcos/d2.dcm创建IO对象

     

尝试创建以下内容之一:   您可能无法设置文件后缀,或       将后缀设置为不支持的类型。

我已成功用

加注了它
vtkGDCMImageReader* reader = vtkGDCMImageReader::New();
reader->SetFileName(fileName);
reader->Update();
vtkImageData* imageData = reader->GetOutput();
cout << "imageData->GetScalarTypeAsString(): " << imageData->GetScalarTypeAsString() << endl;

GetScalarTypeAsString()返回 unsigned short 。 无论如何,我尝试使用unsigned long,unsigned int,double,int,short,short unsigned int,unsigned char ...我也一样。

这是代码:

typedef itk::Image <unsigned short> ImageType;
typedef itk::ImageFileReader<ImageType> ReaderType;
ReaderType::Pointer reader = ReaderType::New();
try
{
    reader->SetFileName(nombreFichero);
}
catch (itk::ExceptionObject& excep)
{
    cerr << excep << endl;
    return;
}

3 个答案:

答案 0 :(得分:1)

与vtk一样,itk也有基于gdcm的特定类来读取DICOM系列。 看一看: http://www.itk.org/Doxygen/html/classitk_1_1GDCMImageIO.html

答案 1 :(得分:0)

将图像IO设置为gdcmImageIO,然后您可以读取.dcm文件。 添加gdcmImageIO的代码如下:

  

typedef itk :: ImageFileReader&lt; InputImageType&gt; ReaderType;

     

ReaderType ::指针式阅读器= ReaderType :: New();阅读器 - &GT; SetFileName(   argv [1]);

     

typedef itk :: GDCMImageIO ImageIOType;

     

ImageIOType ::指针gdcmImageIO = ImageIOType :: New();

     

reader-&gt; SetImageIO(gdcmImageIO);

答案 2 :(得分:0)

即使在使用Qt构建时也要确保使用CMake。如果不使用CMake,则不会生成注册ImageIO工厂对象的特殊代码。参见

http://doc.qt.digia.com/qtcreator-2.4/creator-project-cmake.html