/********************************************************************** 文件名: 5.3_ImageAccumulateExample.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include //测试图像:../data/lena-gray.jpg int main(int argc, char* argv[]) { if (argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName ( "..\\data\\lena-gray.jpg" ); reader->Update(); int bins = 16; int comps = 1; vtkSmartPointer histogram = vtkSmartPointer::New(); histogram->SetInput(reader->GetOutput()); histogram->SetComponentExtent(0, bins-1, 0, 0, 0, 0); histogram->SetComponentOrigin(0, 0, 0); histogram->SetComponentSpacing(256.0/bins, 0, 0); histogram->Update(); int* output = static_cast(histogram->GetOutput()->GetScalarPointer()); vtkSmartPointer frequencies = vtkSmartPointer::New(); frequencies->SetNumberOfComponents(1); for(int j = 0; j < bins; ++j) { for(int i=0; iInsertNextTuple1(*output++); } } vtkSmartPointer dataObject = vtkSmartPointer::New(); dataObject->GetFieldData()->AddArray( frequencies ); vtkSmartPointer barChart = vtkSmartPointer::New(); barChart->SetInput(dataObject); barChart->SetTitle("Histogram"); barChart->GetPositionCoordinate()->SetValue(0.05,0.05,0.0); barChart->GetPosition2Coordinate()->SetValue(0.95,0.95,0.0); barChart->GetProperty()->SetColor(0,0,0); barChart->GetTitleTextProperty()->SetColor(0,0,0); barChart->GetLabelTextProperty()->SetColor(0,0,0); barChart->GetLegendActor()->SetNumberOfEntries(dataObject->GetFieldData()->GetArray(0)->GetNumberOfTuples()); barChart->LegendVisibilityOff(); barChart->LabelVisibilityOff(); double colors[3][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } }; int count = 0; for( int i = 0; i < bins; ++i ) { for( int j = 0; j < comps; ++j ) { barChart->SetBarColor( count++, colors[j] ); } } vtkSmartPointer renderer = vtkSmartPointer::New(); renderer->AddActor(barChart); renderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(renderer); renderWindow->SetSize(640, 480); renderWindow->Render(); renderWindow->SetWindowName("ImageAccumulateExample"); vtkSmartPointer interactor = vtkSmartPointer::New(); interactor->SetRenderWindow(renderWindow); interactor->Initialize(); interactor->Start(); return EXIT_SUCCESS; }