/********************************************************************** 文件名: 5.3_ImageMathematicsExample.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 int main(int, char *[]) { vtkSmartPointer imageSource = vtkSmartPointer::New(); imageSource->SetNumberOfScalarComponents(3); imageSource->SetScalarTypeToUnsignedChar(); imageSource->SetExtent(0, 4, 0, 4, 0, 0); imageSource->SetDrawColor(100.0, 0, 0); imageSource->FillBox(0, 4, 0, 4); imageSource->Update(); vtkSmartPointer imageMath = vtkSmartPointer::New(); imageMath->SetOperationToMultiplyByK(); imageMath->SetConstantK(2.0); imageMath->SetInputConnection(imageSource->GetOutputPort()); imageMath->Update(); vtkSmartPointer originalActor = vtkSmartPointer::New(); originalActor->SetInput( imageSource->GetOutput()); vtkSmartPointer mathActor = vtkSmartPointer::New(); mathActor->SetInput(imageMath->GetOutput()); double leftViewport[4] = {0.0, 0.0, 0.5, 1.0}; double rightViewport[4] = {0.5, 0.0, 1.0, 1.0}; vtkSmartPointer originalRenderer = vtkSmartPointer::New(); originalRenderer->SetViewport(leftViewport); originalRenderer->AddActor(originalActor); originalRenderer->ResetCamera(); originalRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer gradientMagnitudeRenderer = vtkSmartPointer::New(); gradientMagnitudeRenderer->SetViewport(rightViewport); gradientMagnitudeRenderer->AddActor(mathActor); gradientMagnitudeRenderer->ResetCamera(); gradientMagnitudeRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(originalRenderer); renderWindow->AddRenderer(gradientMagnitudeRenderer); renderWindow->SetSize(640, 480); renderWindow->Render(); renderWindow->SetWindowName("ImageMathematicsExample"); vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); vtkSmartPointer style = vtkSmartPointer::New(); renderWindowInteractor->SetInteractorStyle(style); renderWindowInteractor->SetRenderWindow(renderWindow); renderWindowInteractor->Initialize(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }