我正在使用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;
}
答案 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