如何能对读入的序列二值图进行三维开操作


#define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2)
#include "D:\maize_CT\Read_filter\Imgproc.h"
#include "vtkBMPReader.h"
#include "vtkSmartPointer.h" 
#include <vtkImageDilateErode3D.h>
#include <vtkImageActor.h>
#include <vtkImageMapper3D.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkNamedColors.h>
#include <vtkInteractorStyleImage.h>
#include <vtkMarchingCubes.h>
#include <vtkImageAppend.h>
#include <vtkImageViewer2.h>
#include <vtkMarchingCubes.h>
#include <vtkStripper.h>
#include <vtkPolyDataMapper.h>
#include <vtkimageProperty.h>
#include <vtkOutlineFilter.h>
#include <vtkCamera.h>
#include <vtkStringArray.h>
#include <vtkImageToPolyDataFilter.h>
#include <vtkDataSetMapper.h>


int main() {
    vtkNew<vtkNamedColors> colors;
    //生成文件序列组名
    vtkSmartPointer <vtkStringArray> fileArray =
        vtkSmartPointer <vtkStringArray>::New();
    char fileName[128];
    for (int i = 0; i < FRAMES; i++)
    {
        sprintf(fileName, "E:/Juno_segmentation/00004641/Maxcontour/ct%04d.bmp", i);
        std::string fileStr(fileName);
        fileArray->InsertNextValue(fileStr);
    }
    //读取序列图
    vtkSmartPointer<vtkBMPReader>Reader = vtkSmartPointer<vtkBMPReader>::New();
    Reader->SetFileNames(fileArray);
    Reader->Update();

    //形态学开操作
    vtkNew<vtkImageDilateErode3D> dilateErode;
    dilateErode->SetInputConnection(Reader->GetOutputPort());
    dilateErode->SetDilateValue(0);
    dilateErode->SetErodeValue(255);
    dilateErode->SetKernelSize(15, 15, 3);
    dilateErode->ReleaseDataFlagOff();

    vtkNew<vtkImageActor> originalActor;
    originalActor->GetMapper()->SetInputConnection(Reader->GetOutputPort());

    vtkNew<vtkImageActor> openCloseActor;
    openCloseActor->GetMapper()->SetInputConnection(dilateErode->GetOutputPort());

    // Define viewport ranges
    // (xmin, ymin, xmax, ymax)
    double originalViewport[4] = { 0.0, 0.0, 0.5, 1.0 };
    double openCloseViewport[4] = { 0.5, 0.0, 1.0, 1.0 };

    // Setup renderers
    vtkNew<vtkRenderer> originalRenderer;
    originalRenderer->SetViewport(originalViewport);
    originalRenderer->AddActor(originalActor);
    originalRenderer->ResetCamera();
    originalRenderer->SetBackground(colors->GetColor3d("Sienna").GetData());

    vtkNew<vtkRenderer> dilateErodeRenderer;
    dilateErodeRenderer->SetViewport(openCloseViewport);
    dilateErodeRenderer->AddActor(openCloseActor);
    dilateErodeRenderer->ResetCamera();
    dilateErodeRenderer->SetBackground(colors->GetColor3d("RoyalBlue").GetData());

    vtkNew<vtkRenderWindow> renderWindow;
    renderWindow->SetSize(600, 300);
    renderWindow->AddRenderer(originalRenderer);
    renderWindow->AddRenderer(dilateErodeRenderer);
    renderWindow->SetWindowName("ImageDilateErode3D");

    vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
    vtkNew<vtkInteractorStyleImage> style;

    renderWindowInteractor->SetInteractorStyle(style);

    renderWindowInteractor->SetRenderWindow(renderWindow);
    renderWindow->Render();
    renderWindowInteractor->Initialize();

    renderWindowInteractor->Start();

    return EXIT_SUCCESS;
}

我的运行结果视场一片黑,啥也看不见