1

QtCreatorでITK4.2を使用しています。

いくつかの画像を読み込もうとすると、私はいつも同じようになります。

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()はunsignedshortを返します。とにかく、unsigned long、unsigned int、double、int、short、short unsigned int、unsignedcharを試してみました...同じようになりました。

これはコードです:

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にもDICOMシリーズを読み取るためのgdcmに基づく特定のクラスがあります。ご覧ください: http ://www.itk.org/Doxygen/html/classitk_1_1GDCMImageIO.html

于 2012-12-18T07:41:54.363 に答える
0

イメージIOをリーダーのgdcmImageIOとして設定すると、.dcmファイルを読み取ることができます。gdcmImageIOを追加するコードは次のとおりです。

typedef itk :: ImageFileReader <InputImageType> ReaderType;

ReaderType :: Pointer reader = ReaderType :: New(); リーダー->SetFileName(argv [1]);

typedef itk :: GDCMImageIO ImageIOType;

ImageIOType :: Pointer gdcmImageIO = ImageIOType :: New();

リーダー->SetImageIO(gdcmImageIO);

于 2012-12-19T06:57:09.700 に答える
0

Qtでビルドする場合でも、必ずCMakeを使用してください。CMakeを使用しない場合、ImageIOファクトリオブジェクトを登録する特別なコードは生成されません。見る

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

于 2013-04-01T14:15:14.367 に答える