QT5+VTK 7.0.0 で構成されたボリューム スライスを表示しようとしています。ただし、vtkImageSlice + vtkImageStackを使用しても、 5つのスライスではなく1 つのスライスしか表示されない理由がわかりません。これは私が使用しているコードです:
/*This function receives an ultrasound image from network.
The function is working fine if we display the 2D images,
but I want to stack a bunch of images in a volume.
The imageStack at the end always keeps one image only.*/
void WDisplay::Disp(QImage b)
{
// qimagevtk is a vtkSmartPointer<vtkQImageToImageSource> type
qimagevtk->SetQImage(&b);
qimagevtk->Update();
// imageSliceMapper is a vtkSmartPointer<vtkImageSliceMapper> type
imageSliceMapper->SetInputData(qimagevtk->GetOutput());
// imageSliceMapper is a vtkSmartPointer<vtkImageSlice> type
imageSlice->SetMapper(imageSliceMapper);
imageSlice->GetProperty()->SetOpacity(.5);
// Stack
// vtkSmartPointer<vtkImageStack>
imageStack->AddImage(imageSlice);
if(!(idx<5)) //idx initialized at zero in the constructor
{
// m_renderer ---> vtkRenderer
m_renderer->AddViewProp(imageStack);
m_renderer->Render();
// wvtk ---> QVTKWidget
wvtk->GetInteractor()->Render();
idx = 0;
}
else
idx++;
}
これは、関数を実行したときに得た出力 (スクリーンショット) です。
すべての vtk オブジェクトは、vtkSmartPointer< vtk object type >::New()を使用してコンストラクターで作成されました。誰でも私を助けてくれることを願っています。ありがとうございました。