
1 #include "vtkAutoInit.h"
2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
3 VTK_MODULE_INIT(vtkInteractionStyle);
4
5 #include <vtkActor.h>
6 #include <vtkBarChartActor.h>
7 #include <vtkFieldData.h>
8 #include <vtkImageAccumulate.h>
9 #include <vtkImageData.h>
10 #include <vtkIntArray.h>
11 #include <vtkJPEGReader.h>
12 #include <vtkLegendBoxActor.h>
13 #include <vtkProperty2D.h>
14 #include <vtkRenderer.h>
15 #include <vtkRenderWindow.h>
16 #include <vtkRenderWindowInteractor.h>
17 #include <vtkSmartPointer.h>
18 #include <vtkTextProperty.h>
19
20 //测试图像:../data/lena-gray.jpg
21 int main(int argc, char* argv[])
22 {
23
24 vtkSmartPointer<vtkJPEGReader> reader =
25 vtkSmartPointer<vtkJPEGReader>::New();
26 reader->SetFileName ( "lena-gray.jpg" );
27 reader->Update();
28
29 int bins = 16;
30 int comps = 1;
31
32 vtkSmartPointer<vtkImageAccumulate> histogram =
33 vtkSmartPointer<vtkImageAccumulate>::New();
34 histogram->SetInputData(reader->GetOutput());
35 histogram->SetComponentExtent(0, bins-1, 0, 0, 0, 0);
36 histogram->SetComponentOrigin(0, 0, 0);
37 histogram->SetComponentSpacing(256.0/bins, 0, 0);
38 histogram->Update();
39
40 int* output = static_cast<int*>(histogram->GetOutput()->GetScalarPointer());
41
42 vtkSmartPointer<vtkIntArray> frequencies =
43 vtkSmartPointer<vtkIntArray>::New();
44 frequencies->SetNumberOfComponents(1);
45
46 for(int j = 0; j < bins; ++j)
47 {
48 for(int i=0; i<comps; i++)
49 {
50 frequencies->InsertNextTuple1(*output++);
51 }
52 }
53
54 vtkSmartPointer<vtkDataObject> dataObject =
55 vtkSmartPointer<vtkDataObject>::New();
56 dataObject->GetFieldData()->AddArray( frequencies );
57
58 vtkSmartPointer<vtkBarChartActor> barChart =
59 vtkSmartPointer<vtkBarChartActor>::New();
60 barChart->SetInput(dataObject);
61 barChart->SetTitle("Histogram");
62 barChart->GetPositionCoordinate()->SetValue(0.05,0.05,0.0);
63 barChart->GetPosition2Coordinate()->SetValue(0.95,0.95,0.0);
64 barChart->GetProperty()->SetColor(0,0,0);
65 barChart->GetTitleTextProperty()->SetColor(0,0,0);
66 barChart->GetLabelTextProperty()->SetColor(0,0,0);
67 barChart->GetLegendActor()->SetNumberOfEntries(dataObject->GetFieldData()->GetArray(0)->GetNumberOfTuples());
68 barChart->LegendVisibilityOff();
69 barChart->LabelVisibilityOff();
70
71 double colors[3][3] = {
72 { 1, 0, 0 },
73 { 0, 1, 0 },
74 { 0, 0, 1 } };
75
76 int count = 0;
77 for( int i = 0; i < bins; ++i )
78 {
79 for( int j = 0; j < comps; ++j )
80 {
81 barChart->SetBarColor( count++, colors[j] );
82 }
83 }
84
85 vtkSmartPointer<vtkRenderer> renderer =
86 vtkSmartPointer<vtkRenderer>::New();
87 renderer->AddActor(barChart);
88 renderer->SetBackground(1.0, 1.0, 1.0);
89
90 vtkSmartPointer<vtkRenderWindow> renderWindow =
91 vtkSmartPointer<vtkRenderWindow>::New();
92 renderWindow->AddRenderer(renderer);
93 renderWindow->SetSize(640, 480);
94 renderWindow->Render();
95 renderWindow->SetWindowName("ImageAccumulateExample");
96
97 vtkSmartPointer<vtkRenderWindowInteractor> interactor =
98 vtkSmartPointer<vtkRenderWindowInteractor>::New();
99 interactor->SetRenderWindow(renderWindow);
100
101 interactor->Initialize();
102 interactor->Start();
103
104 return EXIT_SUCCESS;
105 }


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-08-15 Qt item setZValue() 函数