VTK 图像融合

效果图

 

 代码如下:

    vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();
    reader->SetFileName("d:/h1.jpg");
    reader->Update();

    vtkSmartPointer<vtkImageCanvasSource2D> back = vtkSmartPointer<vtkImageCanvasSource2D>::New();
    back->SetNumberOfScalarComponents(1);
    back->SetScalarTypeToUnsignedChar();
    back->SetExtent(0, 512, 0, 512, 0, 0);
    back->SetDrawColor(0.0);
    back->FillBox(0, 512, 0, 512);
    back->SetDrawColor(255);
    back->FillBox(100, 400, 100, 400);
    back->Update();

    vtkSmartPointer<vtkImageBlend> blend = vtkSmartPointer<vtkImageBlend>::New();
    blend->AddInputData((vtkDataObject*)reader->GetOutput());
    blend->AddInputData((vtkDataObject*)back->GetOutput());
    blend->SetOpacity(0, 0.7);
    blend->SetOpacity(1, 0.3);
    blend->Update();

    double leftview[4] = {0,0, 0.33,1};
    double midview[4] = {0.33,0, 0.66,1};
    double rightview[4] = {0.66,0, 1.0,1};

    vtkSmartPointer<vtkImageActor> actor1 = vtkSmartPointer<vtkImageActor>::New();
    actor1->GetMapper()->SetInputConnection(reader->GetOutputPort());
    pRenderer->AddActor(actor1);
    pRenderer->SetViewport(leftview);
    pRenderer->ResetCamera();
    pRenderer->SetBackground(1,0,0);

    vtkSmartPointer<vtkImageActor> actor2 = vtkSmartPointer<vtkImageActor>::New();
    actor2->GetMapper()->SetInputConnection(back->GetOutputPort());

    vtkSmartPointer<vtkRenderer> render2 = vtkSmartPointer<vtkRenderer>::New();
    render2->SetViewport(midview);
    render2->AddActor(actor2);
    render2->ResetCamera();
    render2->SetBackground(0,1,0);

    vtkSmartPointer<vtkImageActor> actor3 = vtkSmartPointer<vtkImageActor>::New();
    actor3->GetMapper()->SetInputConnection(blend->GetOutputPort());
    vtkSmartPointer<vtkRenderer> render3 = vtkSmartPointer<vtkRenderer>::New();
    render3->SetViewport(rightview);
    render3->AddActor(actor3);
    render3->ResetCamera();
    render3->SetBackground(0,0,1);


    pRenderWindow->AddRenderer(pRenderer);
    pRenderWindow->AddRenderer(render2);
    pRenderWindow->AddRenderer(render3);

  

posted @ 2022-07-06 14:18  larkin-cn  阅读(119)  评论(0编辑  收藏  举报