您的位置:首页 > 其它

VTK图像操作之灰度映射

2017-10-21 23:02 441 查看
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;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: