/********************************************************************** 文件名: 5.4_ImageGradientExample.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 //测试图像:../data/lena-gray.jpg int main(int argc, char* argv[]) { if (argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName(argv[1]); reader->Update(); vtkSmartPointer gradientFilter = vtkSmartPointer::New(); gradientFilter->SetInputConnection(reader->GetOutputPort()); gradientFilter->SetDimensionality(2); vtkSmartPointer magnitudeFilter = vtkSmartPointer::New(); magnitudeFilter->SetInputConnection(gradientFilter->GetOutputPort()); magnitudeFilter->Update(); double range[2]; magnitudeFilter->GetOutput()->GetScalarRange(range); vtkSmartPointer ShiftScale = vtkSmartPointer::New(); ShiftScale->SetOutputScalarTypeToUnsignedChar(); ShiftScale->SetScale( 255 / range[1] ); ShiftScale->SetInputConnection(magnitudeFilter->GetOutputPort()); ShiftScale->Update(); vtkSmartPointer originalActor = vtkSmartPointer::New(); originalActor->SetInput(reader->GetOutput()); vtkSmartPointer gradActor = vtkSmartPointer::New(); gradActor->SetInput(ShiftScale->GetOutput()); double originalViewport[4] = {0.0, 0.0, 0.5, 1.0}; double gradviewport[4] = {0.5, 0.0, 1.0, 1.0}; vtkSmartPointer originalRenderer = vtkSmartPointer::New(); originalRenderer->SetViewport(originalViewport); originalRenderer->AddActor(originalActor); originalRenderer->ResetCamera(); originalRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer gradRenderer = vtkSmartPointer::New(); gradRenderer->SetViewport(gradviewport); gradRenderer->AddActor(gradActor); gradRenderer->ResetCamera(); gradRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(originalRenderer); renderWindow->AddRenderer(gradRenderer); renderWindow->SetSize( 640, 320 ); renderWindow->Render(); renderWindow->SetWindowName("ImageGradientExample"); vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); vtkSmartPointer style = vtkSmartPointer::New(); renderWindowInteractor->SetInteractorStyle(style); renderWindowInteractor->SetRenderWindow(renderWindow); renderWindowInteractor->Initialize(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }