首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ITK VTK的组合

ITK VTK的组合
EN

Stack Overflow用户
提问于 2015-04-24 22:53:46
回答 1查看 693关注 0票数 1

我是ITK和VTK医学影像编程的初学者。我想使用下面的代码作为读取图像的ITK和显示它的VTK。没有其他选择。我让它“构建”和“运行”“成功”。但我看不到VTK窗口中的图像。

代码语言:javascript
复制
#include "itkPNGImageIO.h"
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageToVTKImageFilter.h"

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"

int main( )
{
    typedef itk::Image<unsigned short,2> ImageType;
    typedef itk::ImageFileReader<ImageType> ReaderType;
    typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;

    ReaderType::Pointer reader= ReaderType::New();
    ConnectorType::Pointer connector= ConnectorType::New();
    reader->SetFileName("BrainT1Slice.png");
    reader->SetImageIO(itk::PNGImageIO::New());
    connector->SetInput(reader->GetOutput());

    vtkImageActor *actor = vtkImageActor::New();
    actor->SetInputData(connector->GetOutput());
    vtkRenderer * ren = vtkRenderer::New();
    ren->AddActor(actor);
    vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren);

    vtkImageViewer* viewer= vtkImageViewer::New();
    vtkRenderWindowInteractor* renderWindowInteractor=vtkRenderWindowInteractor::New();
    viewer->SetInputData( connector->GetOutput() );
    viewer->SetupInteractor( renderWindowInteractor);
    viewer->SetColorWindow( 255);
    viewer->SetColorLevel( 128);
    viewer->Render();
    renderWindowInteractor->Initialize();
    renderWindowInteractor->Start();

    return 0;
}

当连接器将数据传输到actor时会发生什么?我使用"itk-4.6.0“、”vtk-6.2.0“(两者都已成功建立)和"vs2010”。

EN

回答 1

Stack Overflow用户

发布于 2015-04-25 18:50:00

我正在尝试将您的代码与示例http://itk.org/Wiki/ITK/Examples/IO/ImageToVTKImageFilter进行比较。由于您使用的是vtk6 (在本例中,它是VTK_MAJOR_VERSION <= 5的else ),因此请尝试替换

代码语言:javascript
复制
actor->SetInputData(connector->GetOutput());

使用

代码语言:javascript
复制
 connector->Update();
 actor->GetMapper()->SetInputData(connector->GetOutput());

如果仍然不起作用,请检查是否已正确读取数据,例如,使用MinimumMaximumImageCalculator检查强度范围http://itk.org/Wiki/ITK/Examples/ImageProcessing/MinimumMaximumImageCalculator

还要注意图像的数据类型。会不会你的png实际上是一个RGB图像?(示例请参见http://www.na-mic.org/svn/Slicer3-lib-mirrors/trunk/Insight/Testing/Code/IO/itkPNGImageIOTest.cxx )

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29850725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档