(1):Vtk读取并显示图像:三种方法

转载:未知出处

转载:用VTK显示平面图片:http://blog.csdn.net/tonylk/article/details/464881

用到vtkJPEGReader类。

包含的头文件:

  1. #include "vtkActor.h" #include "vtkRenderer.h"
  2. #include "vtkRenderWindow.h"
  3. #include "vtkRenderWindowInteractor.h" #include "vtkImageViewer.h" #include "vtkJPEGReader.h" #include "vtkImageActor.h"
  4. #include "vtkInteractorStyleImage.h" #include "vtkActor2D.h"

方法一:

使用vtkImageMapper和vtkAcotor2D来实现

  1. int main(int argc, char **argv)
  2. {
  3. int extent[6];
  4. vtkJPEGReader *m_reader = vtkJPEGReader::New();
  5. m_reader->SetFileName("C:\\Users\\igst\\Documents\\美图图库\\叶.jpg");
  6. m_reader->SetDataByteOrderToLittleEndian();
  7. m_reader->SetDataScalarTypeToUnsignedChar();
  8. m_reader->SetFileDimensionality(3);
  9. vtkImageMapper *mapper=vtkImageMapper::New();
  10. mapper->SetInput(m_reader->GetOutput());
  11. mapper->SetColorLevel(128); mapper->SetColorWindow(256);
  12. vtkActor2D *actor=vtkActor2D::New();
  13. actor->SetMapper(mapper);
  14. vtkRenderer *m_Renderer = vtkRenderer::New();
  15. vtkRenderWindow *m_RenWin = vtkRenderWindow::New();
  16. m_RenWin->AddRenderer(m_Renderer);
  17. vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
  18. iren->SetRenderWindow(m_RenWin);
  19. vtkInteractorStyleImage *interactor = vtkInteractorStyleImage::New();
  20. iren->SetInteractorStyle(interactor); m_Renderer->AddActor(actor);
  21. m_Renderer->SetBackground(0.1, 0.2, 0.4); m_RenWin->Render();
  22. m_reader->GetDataExtent(extent);//如果把这条命令放在Render()的前面则无效
  23. m_RenWin->SetSize(extent[1],extent[3]);
  24. iren->Initialize();
  25. iren->Start();
  26. return 0;
  27. }

结果:

 方法二:

使用vtkImageActor类,不需要用vktImageMaper

  1. int main(int argc, char **argv)
  2. {
  3. vtkJPEGReader *m_reader = vtkJPEGReader::New();
  4. m_reader->SetFileName("C:\\Users\\igst\\Documents\\美图图库\\荷叶.jpg");
  5. m_reader->SetDataByteOrderToLittleEndian();
  6. m_reader->SetDataScalarTypeToUnsignedChar();
  7. m_reader->SetFileDimensionality(3);
  8. vtkImageActor *m_Actor = vtkImageActor::New();
  9. m_Actor->SetInput(m_reader->GetOutput()); vtkRenderer *m_Renderer = vtkRenderer::New();
  10. vtkRenderWindow *m_RenWin = vtkRenderWindow::New();
  11. m_RenWin->AddRenderer(m_Renderer);
  12. vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
  13. iren->SetRenderWindow(m_RenWin);
  14. vtkInteractorStyleImage *interactor = vtkInteractorStyleImage::New();
  15. iren->SetInteractorStyle(interactor); m_Renderer->AddActor(m_Actor);
  16. m_Renderer->SetBackground(0.1, 0.2, 0.4);
  17. m_RenWin->Render();
  18. iren->Initialize();
  19. iren->Start();
  20. return 0;
  21. }
  22.  
  23. 方法三:简便快速
  24. 使用ImageViewer,需要调节窗宽窗位
  25.  
  26. ImageViewer vtkRenderWindow, vtkRenderer, vtkActor2D and vtkImageMapper集成在了一起,
  27. 不需要再对vtkRenderWindow, vtkRenderer, vtkActor2D and vtkImageMapper定义。
  28.  int main() {
  29. vtkJPEGReader *image=vtkJPEGReader::New();
  30. image->SetFileName("C:\\Users\\igst\\Documents\\美图图库\\竹林.jpg");
  31. image->SetDataByteOrderToLittleEndian();
  32. image->SetDataScalarTypeToUnsignedChar();
  33. vtkImageViewer *pViewer = vtkImageViewer::New();//显示二维图形
  34. pViewer->SetColorLevel(128);//设置窗宽窗位,
  35. pViewer->SetColorWindow(256);
  36. pViewer->SetInput(image->GetOutput());
  37. pViewer->Render();
  38. vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
  39. iren->SetRenderWindow(pViewer->GetRenderWindow());
  40. iren->Initialize();
  41. iren->Start();
  42. return 0;
  43. }

(2):VTK保存图片

Vtk读取并显示保存图像的更多相关文章

  1. opencv-python教程学习系列2-读取/显示/保存图像

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的读取.显示以及保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: ...

  2. 用python简单处理图片(1):打开\显示\保存图像

    一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...

  3. Emgu学习之(二)——图像读取、显示、保存

    visual Studio Community 2015 工程和源代码:http://pan.baidu.com/s/1o6u5Fdw 内容 在这篇文章中将提到以下内容: 从文件中读取图像 Image ...

  4. Opencv-Python:图像尺寸、图像的读取、显示、保存与复制

    Opencv-Python:图像尺寸.图像的读取.显示.保存与复制 原创 2017年11月23日 21:30:49 4440 在使用opencv的方法时,首先必须导入opencv包.新的opencv导 ...

  5. 图像的读取,显示与保存(基于skimage模块)

    一 skiamge模块 skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能.它 ...

  6. OpenCV中图像的读取,显示与保存

      图像的读取,显示与保存 相关函数:cv2.imread().cv2.imshow().cv2.imwrite() 1.读入图像: 用cv2.imread()函数来读取图像,cv2.imread(路 ...

  7. 使用C#+EmguCV处理图像入门(图像读取_显示_保存)二

    上个随笔已经介绍EmguCV的一些常用库和程序安装以及环境变量的配置,这次写的是如何使用这个类库对图像进行操作. EmguCV图像处理系统组成(个人见解): 图像的基本操作: 贴个代码: using ...

  8. matlab数字图像处理-冈萨雷斯-读取,显示,保存图像

    图像读取:imread(filename) 显示图像‘ 显示多幅图像 保存图像 b 计算压缩比

  9. 第十二节,OpenCV学习(一)图像的读取、显示、保存

    一.读取图像 所谓的图像就是一个数组,对图像的处理就是对数字的处理 import cv2 import numpy as np img = cv2.imread('dog.jpg') print(im ...

随机推荐

  1. 360 基于 Prometheus的在线服务监控实践

    转自:https://mp.weixin.qq.com/s/lcjZzjptxrUBN1999k_rXw 主题简介: Prometheus基础介绍 Prometheus打点及查询技巧 Promethe ...

  2. [vuejs短文]使用vue-transition制作小小轮播图

    提示 本文是个人的一点小笔记,用来记录开发中遇到的轮播图问题和vue-transition问题. 会不断学习各种轮播图添加到本文当中 也有可能会上线,方便看效果 开始制作 超简易呼吸轮播 简单粗暴的使 ...

  3. delphi主i窗口中实现多页面管理效果

    MainForm上加Panel,把Panel的DockSite设为True, 把窗口FB_orderManage的DragKind设为dkDock,  DragMode设为dmAuromatic 在M ...

  4. Fleury算法 求欧拉回路

    Fleury算法 #include <iostream> #include <cstdio> #include <cstring> #include <cma ...

  5. 简述synchronized和java.util.concurrent.locks.Lock的异同

    1.synchronized 用在方法和代码块的区别? a. 可以只对需要同步的使用 b.与wait(),notify()和notifyall()方法使用比较方便 2.wait() a.释放持有的对象 ...

  6. 【ACM】hdu_zs2_1005_Problem E _201308030747

    Problem E Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Subm ...

  7. 我要带徒弟学JAVA架构 ( 写架构,非用架构 )

    80元,当然我不觉得我带的徒弟比花了1万多在培训班学习的学生差,你努力了.会比他们出色的多.等你学有所成.相同能够成为jeecg核心成员之中的一个.一起构建Java学习平台.你也能够成为非常好的师傅. ...

  8. [Cypress] Wait for XHR Responses in a Cypress Test

    When testing interactions that require asynchronous calls, we’ll need to wait on responses to make s ...

  9. BS程序怎样通过浏览器了解点击响应时间

    原创作品,出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  10. jquery非文本框复制

    function selectText(x) { if (document.selection) { var range = document.body.createTextRange();//ie ...