以下代碼實現了itk讀取dicom數據,轉換爲vtkData,然後用Qt顯示。
1、Qt Designer 搭建界面,QVTKOpenGLNativeWidget 是vtk的一個類,連接qt與vtk的橋樑,一個可以顯示dicom數據的widget,可以當做一個普通的widget去佈局。但是爲vtk 與qt 的版本都比較高,注意一下。
2、因爲使用itk較多,直接用itk讀的dicom數據,然後使用 itk::ImageToVTKImageFilter轉成vtkData,便於顯示。
3、QVTKOpenGLNativeWidget 顯示 dicom數據,主代碼如下:
vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputData(connector->GetOutput());
imageViewer->SetRenderWindow(ui.qvtk_2->renderWindow()); //ui.qvtk_2 爲QVTKOpenGLNativeWidget
imageViewer->SetSliceOrientationToXY();
imageViewer->SetSlice();//設置初始顯示的切面Index
imageViewer->SetColorLevel(40);//窗寬窗位
imageViewer->SetColorWindow(40);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor= vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<myVtkInteractorStyleImage> myInteractorStyle = vtkSmartPointer<myVtkInteractorStyleImage>::New();
myInteractorStyle->SetImageViewer(imageViewer);
imageViewer->SetupInteractor(renderWindowInteractor);
renderWindowInteractor->SetInteractorStyle(myInteractorStyle);
imageViewer->GetRenderer()->SetBackground(0.0, 0.0, 0.0);
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
imageViewer->Render();
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();