版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yu253/article/details/78307230
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;
}
运行结果: