Vtk读取并显示保存图像
生活随笔
收集整理的這篇文章主要介紹了
Vtk读取并显示保存图像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(1):Vtk讀取并顯示圖像:三種方法??
轉載:未知出處
轉載:用VTK顯示平面圖片:http://blog.csdn.net/tonylk/article/details/464881
用到vtkJPEGReader類。
?包含的頭文件:
#include "vtkActor.h" #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkImageViewer.h" #include "vtkJPEGReader.h" #include "vtkImageActor.h" #include "vtkInteractorStyleImage.h" #include "vtkActor2D.h" 方法一:使用vtkImageMapper和vtkAcotor2D來實現
int main(int argc, char **argv) { int extent[6]; vtkJPEGReader *m_reader = vtkJPEGReader::New(); m_reader->SetFileName("C:\\Users\\igst\\Documents\\美圖圖庫\\葉.jpg");m_reader->SetDataByteOrderToLittleEndian(); m_reader->SetDataScalarTypeToUnsignedChar();m_reader->SetFileDimensionality(3); vtkImageMapper *mapper=vtkImageMapper::New();mapper->SetInput(m_reader->GetOutput()); mapper->SetColorLevel(128); mapper->SetColorWindow(256); vtkActor2D *actor=vtkActor2D::New(); actor->SetMapper(mapper); vtkRenderer *m_Renderer = vtkRenderer::New(); vtkRenderWindow *m_RenWin = vtkRenderWindow::New();m_RenWin->AddRenderer(m_Renderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(m_RenWin); vtkInteractorStyleImage *interactor = vtkInteractorStyleImage::New();iren->SetInteractorStyle(interactor); m_Renderer->AddActor(actor); m_Renderer->SetBackground(0.1, 0.2, 0.4); m_RenWin->Render(); m_reader->GetDataExtent(extent);//如果把這條命令放在Render()的前面則無效 m_RenWin->SetSize(extent[1],extent[3]); iren->Initialize(); iren->Start(); return 0;} 結果:?
?方法二:使用vtkImageActor類,不需要用vktImageMaper
int main(int argc, char **argv){ vtkJPEGReader *m_reader = vtkJPEGReader::New(); m_reader->SetFileName("C:\\Users\\igst\\Documents\\美圖圖庫\\荷葉.jpg"); m_reader->SetDataByteOrderToLittleEndian(); m_reader->SetDataScalarTypeToUnsignedChar(); m_reader->SetFileDimensionality(3); vtkImageActor *m_Actor = vtkImageActor::New(); m_Actor->SetInput(m_reader->GetOutput()); vtkRenderer *m_Renderer = vtkRenderer::New(); vtkRenderWindow *m_RenWin = vtkRenderWindow::New(); m_RenWin->AddRenderer(m_Renderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(m_RenWin); vtkInteractorStyleImage *interactor = vtkInteractorStyleImage::New(); iren->SetInteractorStyle(interactor); m_Renderer->AddActor(m_Actor); m_Renderer->SetBackground(0.1, 0.2, 0.4); m_RenWin->Render(); iren->Initialize(); iren->Start(); return 0;} 方法三:簡便快速 使用ImageViewer,需要調節窗寬窗位ImageViewer將 vtkRenderWindow, vtkRenderer, vtkActor2D and vtkImageMapper集成在了一起, 不需要再對vtkRenderWindow, vtkRenderer, vtkActor2D and vtkImageMapper定義。int main() {vtkJPEGReader *image=vtkJPEGReader::New();image->SetFileName("C:\\Users\\igst\\Documents\\美圖圖庫\\竹林.jpg");image->SetDataByteOrderToLittleEndian(); image->SetDataScalarTypeToUnsignedChar();vtkImageViewer *pViewer = vtkImageViewer::New();//顯示二維圖形 pViewer->SetColorLevel(128);//設置窗寬窗位, pViewer->SetColorWindow(256);pViewer->SetInput(image->GetOutput()); pViewer->Render();vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(pViewer->GetRenderWindow()); iren->Initialize(); iren->Start(); return 0;}(2):VTK保存圖片
總結
以上是生活随笔為你收集整理的Vtk读取并显示保存图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同一网络中如何配置多个路由器-同一网络中
- 下一篇: Boost字符串处理