转自:https://blog.csdn.net/Zzhouzhou237/article/details/107199076/
以下代码实现了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();