0

imageviewer を使用せずに dicom 画像を読み込もうとしていますが、実行しようとすると VtkGdmReader.. に遭遇し、エラーが発生しました:

コード => vtkGdmReader の

エラー C2039: 'SetInput' : 'vtkTexture' のメンバーではありません

エラー C2039: 'SetInput' : 'vtkPolyDataMapper' のメンバーではありません

この問題に直面している理由を教えてください。このエラーはvtkバージョンに関連していますか? もしそうなら、どうすればそれについて行くことができますか?

問題の解決を手伝ってください..

4

1 に答える 1

1

コメントで述べたように、このエラーは VTK のバージョンに関連しています。SetInput()VTK 6 で削除されました

VTK 5 で作業するか、コードを更新することができます。更新することにした場合、このエラーはSetInput()、いずれかSetInputData()またはSetInputConnection()いくつかの変更で置き換えることで修正されます。SetInputConnection()フィルターがパイプラインを通過するようにする場合に使用する必要があります。

あなたが言及したエラーを修正する例として、提供したコードの次の行を次の行に置き換える必要があり
VTKtexture->SetInput(ima); ます
VTKplaneMapper->SetInput(VTKplane->GetOutput());

VTKtexture->SetInputConnection(reader->GetOutputPort());
VTKplaneMapper->SetInputConnection(VTKplane->GetOutputPort());

2 番目の変更 ( ) では、 に変更したVTKplaneMapperだけであることに注意してください。一方、最初の変更 ( ) では、に渡される引数を完全に変更しました。これは、データ オブジェクト ( など) がパイプライン オブジェクト (アルゴリズムやエグゼクティブなど) に依存しなくなったためです。この場合、そのデータ オブジェクトを生成したアルゴリズムを引数として指定します。それを探すと、 という行が表示されます。2 番目の変更で行ったように、byに置き換えるだけです。GetOutput()GetOutputPort()VTKtextureSetInputConnection()imavtkImageData* ima = reader->GetOutput();GetOutput()GetOutputPort()

このエラーやその他の発生する可能性のあるエラーの詳細については、VTK Wiki のVTK 6 移行ページ(およびガイド) を参照することをお勧めします。

于 2015-06-18T18:23:51.810 に答える