1

我将 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;
}
4

3 回答 3

1

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

于 2012-12-18T07:41:54.363 回答
0

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

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

于 2013-04-01T14:15:14.367 回答
0

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

typedef itk::ImageFileReader< InputImageType > ReaderType;

ReaderType::Pointer reader = ReaderType::New(); 阅读器->SetFileName(argv[1]);

typedef itk::GDCMImageIO ImageIOType;

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

阅读器->SetImageIO(gdcmImageIO);

于 2012-12-19T06:57:09.700 回答