VTK影象操作之灰度對映
阿新 • • 發佈:2018-11-08
VTK中vtkImageLuminance類提供了彩色影象變換到灰度影象的方法,該類的使用比較簡單,可以通過以下程式碼實現:
int main()
{
vtkSmartPointer<vtkBMPReader> reader = vtkSmartPointer<vtkBMPReader>::New();
const char* filename = "D:\\Color2GrayTest.bmp";
reader->SetFileName(filename);
vtkSmartPointer<vtkImageLuminance> luminanceFliter = vtkSmartPointer<vtkImageLuminance>::New ();
luminanceFliter->SetInputConnection(reader->GetOutputPort());
luminanceFliter->Update();
vtkSmartPointer<vtkImageActor> originActor = vtkSmartPointer<vtkImageActor>::New();
originActor->GetMapper()->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkImageActor> resultActor = vtkSmartPointer<vtkImageActor>::New ();
resultActor->GetMapper()->SetInputConnection(luminanceFliter->GetOutputPort());
double originViewport[4] = { 0.0,0.0,0.5,1.0 };
double resultViewport[4] = { 0.5,0.0,1.0,1.0 };
vtkSmartPointer<vtkRenderer> originRender = vtkSmartPointer<vtkRenderer>::New();
originRender->SetViewport (originViewport);
originRender->AddActor(originActor);
originRender->SetBackground(1.0, 1.0, 1.0);
originRender->ResetCamera();
vtkSmartPointer<vtkRenderer> resultRender = vtkSmartPointer<vtkRenderer>::New();
resultRender->SetViewport(resultViewport);
resultRender->AddActor(resultActor);
resultRender->SetBackground(1.0, 1.0, 1.0);
resultRender->ResetCamera();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(originRender);
renderWindow->AddRenderer(resultRender);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindow->SetInteractor(renderWindowInteractor);
renderWindow->SetSize(800, 600);
renderWindow->SetWindowName("Color2GrayImageTest");
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
執行結果: