首页 > 其他分享 >VTK 实例26:将BMP类型的RGB图像转换为灰度图像

VTK 实例26:将BMP类型的RGB图像转换为灰度图像

时间:2023-08-15 11:33:16浏览次数:40  
标签:26 1.0 shiftscaleRenderer vtkSmartPointer 灰度 图像 renderWindow New include

 1 #include "vtkAutoInit.h" 
 2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
 3 VTK_MODULE_INIT(vtkInteractionStyle);
 4 
 5 #include <vtkSmartPointer.h>
 6 #include <vtkImageData.h>
 7 #include <vtkRenderWindow.h>
 8 #include <vtkRenderWindowInteractor.h>
 9 #include <vtkInteractorStyleImage.h>
10 #include <vtkRenderer.h>
11 #include <vtkImageActor.h>
12 #include <vtkBMPReader.h>
13 #include <vtkImageLuminance.h>
14 
15 //测试图像:../data/lena.bmp
16 int main(int argc, char* argv[])
17 {
18     vtkSmartPointer<vtkBMPReader> reader =
19     vtkSmartPointer<vtkBMPReader>::New();
20     reader->SetFileName ( "lena.bmp" );
21 
22     vtkSmartPointer<vtkImageLuminance> luminanceFilter = 
23         vtkSmartPointer<vtkImageLuminance>::New();
24     luminanceFilter->SetInputConnection(reader->GetOutputPort());
25     luminanceFilter->Update();
26 
27     vtkSmartPointer<vtkImageActor> originalActor =
28         vtkSmartPointer<vtkImageActor>::New();
29     originalActor->SetInputData(reader->GetOutput());
30 
31     vtkSmartPointer<vtkImageActor> shiftscaleActor =
32         vtkSmartPointer<vtkImageActor>::New();
33     shiftscaleActor->SetInputData(luminanceFilter->GetOutput());
34 
35     double originalViewport[4] = {0.0, 0.0, 0.5, 1.0};
36     double shiftscaleViewport[4] = {0.5, 0.0, 1.0, 1.0};
37 
38     vtkSmartPointer<vtkRenderer> originalRenderer =
39         vtkSmartPointer<vtkRenderer>::New();
40     originalRenderer->SetViewport(originalViewport);
41     originalRenderer->AddActor(originalActor);
42     originalRenderer->ResetCamera();
43     originalRenderer->SetBackground(1.0, 1.0, 1.0);
44 
45     vtkSmartPointer<vtkRenderer> shiftscaleRenderer =
46         vtkSmartPointer<vtkRenderer>::New();
47     shiftscaleRenderer->SetViewport(shiftscaleViewport);
48     shiftscaleRenderer->AddActor(shiftscaleActor);
49     shiftscaleRenderer->ResetCamera();
50     shiftscaleRenderer->SetBackground(1.0, 1.0, 1.0);
51 
52     vtkSmartPointer<vtkRenderWindow> renderWindow =
53         vtkSmartPointer<vtkRenderWindow>::New();
54     renderWindow->AddRenderer(originalRenderer);
55     renderWindow->AddRenderer(shiftscaleRenderer);
56     renderWindow->SetSize( 640, 320 );
57     renderWindow->Render();
58     renderWindow->SetWindowName("Color2GrayImageExample");
59 
60     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
61         vtkSmartPointer<vtkRenderWindowInteractor>::New();
62     vtkSmartPointer<vtkInteractorStyleImage> style =
63         vtkSmartPointer<vtkInteractorStyleImage>::New();
64 
65     renderWindowInteractor->SetInteractorStyle(style);
66     renderWindowInteractor->SetRenderWindow(renderWindow);
67     renderWindowInteractor->Initialize();
68 
69     renderWindowInteractor->Start();
70 
71     return EXIT_SUCCESS;
72 }

标签:26,1.0,shiftscaleRenderer,vtkSmartPointer,灰度,图像,renderWindow,New,include
From: https://www.cnblogs.com/ybqjymy/p/17630874.html

相关文章

  • 【剑指Offer】26、二叉搜索树与双向链表
    题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:首先要理解此题目的含义,在双向链表中,每个结点都有前后两个指针;二叉树中,每个结点都有两个指向子结点的左右指针,同时,二叉搜索树树也是一种排序......
  • AI_综述----图像分割综述
    综述调研ppt:http://syzhang.me/post/surveysegmentation/CNN图像语义分割基本上是这个套路:下采样+上采样:Convlution+Deconvlution/Resize多尺度特征融合:特征逐点相加/特征channel维度拼接获得像素级别的segementmap:对每一个像素点进行判断类别即使是更复杂的DeepLabv3+依然也是这......
  • [ARC126C] Maximize GCD 题解
    题意给定一个序列\(A\),每次操作可以使\(A_i+1\)(\(i\in\left[1,n\right]\),\(K\)次操作的\(i\)可以不同),最多可以做\(K\)次。问\(\gcd{A_1,A_2,...,A_n}\)的最大值。题解首先,如果\(K\)可以把当前序列中所有的数都加到\(A_{\max}\),那就全部加到\(A_{\max}\),在......
  • [ARC126D] Pure Straight 题解
    题意给定一个有\(N\)个正整数的序列\(A=(A_1,A_2,\cdots,A_N)\),且\(A_i\in\left[1,K\right]\)。你可以对这个序列做如下操作若干次。交换两个相邻的元素,也就是选出\(i\)和\(j\)满足\(\lverti-j\rvert=1\)并交换\(A_i\)和\(A_j\)。找到最小的操作数使\(......
  • 一文玩转MQTT (ESP8266 DHT11 MQTT MYSQL方案)
    本文我们来聊一聊esp8266利用mqtt协议进行通信。并将数据数据存入数据库的操作。关于MQTTMQTT(消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。搭建MQTT服务器......
  • 基于ESP8266的物联网养花系统
    为了丰富我们的养老生活。本文我们来介绍利用Esp8266来做一个智能养花系统。实现功能通过手机端查看当前的温度湿度以及土壤湿度当土壤湿度低于50%时,自动启动继电器,利用水泵浇水。湿度超过50%断开继电器。所需设备esp8266继电器DHT11土壤湿度传感器线路连接设备VCC(+)GND(-)信号线继......
  • VTK 实例20:用vtkImageViewer2显示三维医学图像mhd的某个切面
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageViewer2.h>7#include<vtkRenderWindow.h>8#include<......
  • VTK 实例12:读取PNG图像并显示
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkPNGReader.h>//PNG读取类6#include<vtkImageViewer.h>//显示2D图像类7#include<vtkRenderWindowInteractor......
  • VTK 实例11:读取BMP图像并显示
    窗宽(WindowWidth):表示所显示信号强度值的范围(CT图像上所包含的CT值范围)窗位(WindowLevel):又称窗水平。窗位是指窗宽上下限的平均数(窗位的高低影响图像的亮度)例如:窗宽为300H,当窗位是0H时,其CT值范围为-150H~0H~+150H;如窗位是+40H时,则CT值范围为-110H~+40H~+190H。通常欲观察某一组织的......
  • 【opencv】传统图像识别:hog+svm实现图像识别详解
    图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。传统图像识别技术的过程分为信息的获取、预处理、特征抽取和选择、分类器设计和分类决策。本文也是从这四点出发进行行文,以期了解传统图像识别技术、掌握hog特征提取和svm分类器。......