QVTKWidget控件顯示二維圖片

QVTKWidget控件不是QT中默認控件,需要手動編譯。用CMAKE編譯VTK過程中,需要選擇VTK支持QT。網絡上有很多教程,不再重複了。但有一點要提醒大家:只需要將Release版本中QVTKWidgetPlugin.dll 和 QVTKWidgetPlugin.lib放在designer文件夾下就可以了,QVTK.dll不需要放入該文件夾下,否則會出現qwidget: must construct a qapplication before a qpaintde 錯誤,因爲Release與Debug中DLL混合在一起。

vtkImageViewer2適合於圖像顯示,對vtkActor, vtkRender等已經做了封裝。
測試代碼如下:

    m_pImageViewer  = vtkSmartPointer< vtkImageViewer2 >::New();
    m_pRenderder    = vtkSmartPointer< vtkRenderer >::New();//渲染場景
    // 設置m_QVTKWidget的渲染器
    ui->m_QVTKWidget->GetRenderWindow()->AddRenderer(m_pRenderder);
    // 用vtkJPEGReader讀取JPG圖像
    vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();
    reader->SetFileName(fileName_str);
    // 將reader的輸出作爲m_pImageViewer的輸入,並設置m_pImageViewer與渲染器m_pRenderer的關聯
    m_pImageViewer->SetInput(reader->GetOutput());
    m_pImageViewer->UpdateDisplayExtent();
    m_pImageViewer->SetRenderWindow(ui->m_QVTKWidget->GetRenderWindow());//設置爲同一個渲染窗口
    m_pImageViewer->SetRenderer(m_pRenderder);//設置渲染場景
    m_pImageViewer->SetupInteractor(ui->m_QVTKWidget->GetRenderWindow()->GetInteractor());//交互方式
    m_pImageViewer->SetSliceOrientationToXY(); //默認就是這個方向的
    m_pImageViewer->GetImageActor()->InterpolateOff();
    m_pRenderder->ResetCamera();
    m_pRenderder->DrawOn();
    ui->m_QVTKWidget->GetRenderWindow()->Render();//自動繪製出圖像

QVTKWidget顯示二維圖片效果如下圖,在基於QT開發的數字圖像處理軟件中顯示,並同時讀取圖片的尺寸,圖像深度和通道數等基本屬性。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章