Advertisement

手动配置(非CMake)ITK和VTK环境实现ITK读取、VTK显示PNG图像

阅读量:

完整博客见:Win10-64位(或Win7)+VS2019+ITK4.13.2+VTK8.2+CMake3.16环境配置

5、ITK读取、VTK显示png图像(手动配置ITK和VTK环境)

在第五小节中, 本程序通过手动创建项目(无需依赖CMakeLists.txt文件进行配置)配置完成后支持运行ITK和VTK相关程序. 您可以通过获取itk_vtk_3文件夹的下载链接来安装该软件包. 该软件包不仅能够顺利运行工程, 还实现了对PNG图像的读取操作以及使用VTK进行展示功能.

5.1 在完成3.7节的基础上,在同一目录中将 F:\Software\ITK4.13.2 目录下的 itk2 项目复制粘贴一份,并将其重命名为 itk_vtk_3

在Visual Studio 2019环境下双击F:\Software\ITK4.13.2\itk_vtk_3\helloItk目录中的helloVtk.sln项目使用VS2019打开工程,在解决方案管理器窗口下选择源代码文件目录中位于itk_png_reader和writer.cxx文件夹内的itk_png_reader_writer.cxx文件,并将其命名为itk_png_reade_vtk_show.cxx

然后将 itk_png_reade_vtk_show.cxx 中的源码替换为以下源码:

复制代码
 #include "itkImage.h"

    
 #include "itkImageFileReader.h"
    
 #include "itkImageToVTKImageFilter.h"
    
 #include "itkPNGImageIOFactory.h"
    
 #include "vtkImageViewer.h"
    
 #include "vtkRenderWindowInteractor.h"
    
 #include "vtkAutoInit.h" 
    
 //#include "itkFlipImageFilter.h"//图像翻转滤波器类
    
  
    
 #include "vtkImageFlip.h"
    
 #include "vtkSmartPointer.h"
    
 VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
    
 VTK_MODULE_INIT(vtkInteractionStyle);
    
 //ITK和VTK联合环境测试(ITK读取、VTK显示图像)
    
 int main(int argc, char** argv)
    
 {
    
 	typedef itk::Image<unsigned char, 2> ImageType;//the type of pic
    
 	typedef itk::ImageFileReader<ImageType> ReaderType;   //the class of read pic
    
 	typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;  //connenct itk and vtk
    
  
    
 	ReaderType::Pointer reader = ReaderType::New();
    
 	ConnectorType::Pointer connector = ConnectorType::New();
    
 	reader->SetFileName("cuiti.png");
    
  
    
 	itk::PNGImageIOFactory::RegisterOneFactory();
    
  
    
 	connector->SetInput(reader->GetOutput());
    
 	connector->Update();
    
  
    
 	vtkSmartPointer<vtkImageFlip> imageflip = vtkSmartPointer<vtkImageFlip>::New();
    
 	imageflip->SetInputData(connector->GetOutput());
    
 	imageflip->SetFilteredAxes(1);//Y轴  图像正向显示
    
 	imageflip->Update();
    
  
    
 	vtkImageViewer* viewer = vtkImageViewer::New();
    
 	vtkRenderWindowInteractor* interactor = vtkRenderWindowInteractor::New();
    
 	viewer->SetInputData(imageflip->GetOutput());
    
 	viewer->SetupInteractor(interactor);
    
 	viewer->GetRenderWindow()->SetSize(500, 500);//set window size
    
 	viewer->SetColorWindow(255); //set window color
    
 	viewer->SetColorLevel(128);   //set the level of window
    
 	viewer->Render();
    
  
    
 	interactor->Initialize();
    
 	interactor->Start();
    
 	return EXIT_SUCCESS;
    
 }

**5.3 设置包含目录:解决方案中 右键 helloVtk —— > 属性 ——> VC++目录 ——> 包含目录,添加 **

F:\Software\VTK8.2.0\Bin\include\vtk-8.2

F:\Software\ITK4.13.2\Source\InsightToolkit-4.13.2\Modules\Bridge\VtkGlue\include

F:\Software\ITK4.13.2\Source\InsightToolkit-4.13.2\Modules\Bridge\VTK\include

包含的后两个路径都是ITK和VTK之间作为桥梁链接的头文件目录:

5.4 配置库路径:在解决方案中执行以下操作——右键点击 helloItk项目——进入属性选项——选择VC++目录下的库目录——添加F:\Software\VTK8.2.0\Bin\lib

在解决方案中,在右键点击 helloItk 选项后依次选择属性设置、链接器设置、输入设置以及附加依赖项选项进行操作。具体来说,请先定位到指定路径下(即F:\Software\VTK8.2.0\Bin\lib),然后遍历该目录下的所有文件并将每个文件拖放到目标位置处即可完成配置

VTK8.2.0 的所有 .lib 文件如下:

复制代码
 vtkChartsCore-8.2.lib

    
 vtkCommonColor-8.2.lib
    
 vtkCommonComputationalGeometry-8.2.lib
    
 vtkCommonCore-8.2.lib
    
 vtkCommonDataModel-8.2.lib
    
 vtkCommonExecutionModel-8.2.lib
    
 vtkCommonMath-8.2.lib
    
 vtkCommonMisc-8.2.lib
    
 vtkCommonSystem-8.2.lib
    
 vtkCommonTransforms-8.2.lib
    
 vtkDICOMParser-8.2.lib
    
 vtkDomainsChemistry-8.2.lib
    
 vtkDomainsChemistryOpenGL2-8.2.lib
    
 vtkdoubleconversion-8.2.lib
    
 vtkexodusII-8.2.lib
    
 vtkexpat-8.2.lib
    
 vtkFiltersAMR-8.2.lib
    
 vtkFiltersCore-8.2.lib
    
 vtkFiltersExtraction-8.2.lib
    
 vtkFiltersFlowPaths-8.2.lib
    
 vtkFiltersGeneral-8.2.lib
    
 vtkFiltersGeneric-8.2.lib
    
 vtkFiltersGeometry-8.2.lib
    
 vtkFiltersHybrid-8.2.lib
    
 vtkFiltersHyperTree-8.2.lib
    
 vtkFiltersImaging-8.2.lib
    
 vtkFiltersModeling-8.2.lib
    
 vtkFiltersParallel-8.2.lib
    
 vtkFiltersParallelImaging-8.2.lib
    
 vtkFiltersPoints-8.2.lib
    
 vtkFiltersProgrammable-8.2.lib
    
 vtkFiltersSelection-8.2.lib
    
 vtkFiltersSMP-8.2.lib
    
 vtkFiltersSources-8.2.lib
    
 vtkFiltersStatistics-8.2.lib
    
 vtkFiltersTexture-8.2.lib
    
 vtkFiltersTopology-8.2.lib
    
 vtkFiltersVerdict-8.2.lib
    
 vtkfreetype-8.2.lib
    
 vtkGeovisCore-8.2.lib
    
 vtkgl2ps-8.2.lib
    
 vtkglew-8.2.lib
    
 vtkhdf5-8.2.lib
    
 vtkhdf5_hl-8.2.lib
    
 vtkImagingColor-8.2.lib
    
 vtkImagingCore-8.2.lib
    
 vtkImagingFourier-8.2.lib
    
 vtkImagingGeneral-8.2.lib
    
 vtkImagingHybrid-8.2.lib
    
 vtkImagingMath-8.2.lib
    
 vtkImagingMorphological-8.2.lib
    
 vtkImagingSources-8.2.lib
    
 vtkImagingStatistics-8.2.lib
    
 vtkImagingStencil-8.2.lib
    
 vtkInfovisCore-8.2.lib
    
 vtkInfovisLayout-8.2.lib
    
 vtkInteractionImage-8.2.lib
    
 vtkInteractionStyle-8.2.lib
    
 vtkInteractionWidgets-8.2.lib
    
 vtkIOAMR-8.2.lib
    
 vtkIOAsynchronous-8.2.lib
    
 vtkIOCityGML-8.2.lib
    
 vtkIOCore-8.2.lib
    
 vtkIOEnSight-8.2.lib
    
 vtkIOExodus-8.2.lib
    
 vtkIOExport-8.2.lib
    
 vtkIOExportOpenGL2-8.2.lib
    
 vtkIOExportPDF-8.2.lib
    
 vtkIOGeometry-8.2.lib
    
 vtkIOImage-8.2.lib
    
 vtkIOImport-8.2.lib
    
 vtkIOInfovis-8.2.lib
    
 vtkIOLegacy-8.2.lib
    
 vtkIOLSDyna-8.2.lib
    
 vtkIOMINC-8.2.lib
    
 vtkIOMovie-8.2.lib
    
 vtkIONetCDF-8.2.lib
    
 vtkIOParallel-8.2.lib
    
 vtkIOParallelXML-8.2.lib
    
 vtkIOPLY-8.2.lib
    
 vtkIOSegY-8.2.lib
    
 vtkIOSQL-8.2.lib
    
 vtkIOTecplotTable-8.2.lib
    
 vtkIOVeraOut-8.2.lib
    
 vtkIOVideo-8.2.lib
    
 vtkIOXML-8.2.lib
    
 vtkIOXMLParser-8.2.lib
    
 vtkjpeg-8.2.lib
    
 vtkjsoncpp-8.2.lib
    
 vtklibharu-8.2.lib
    
 vtklibxml2-8.2.lib
    
 vtkLocalExample-8.2.lib
    
 vtklz4-8.2.lib
    
 vtklzma-8.2.lib
    
 vtkmetaio-8.2.lib
    
 vtkNetCDF-8.2.lib
    
 vtkogg-8.2.lib
    
 vtkParallelCore-8.2.lib
    
 vtkpng-8.2.lib
    
 vtkproj-8.2.lib
    
 vtkpugixml-8.2.lib
    
 vtkRenderingAnnotation-8.2.lib
    
 vtkRenderingContext2D-8.2.lib
    
 vtkRenderingContextOpenGL2-8.2.lib
    
 vtkRenderingCore-8.2.lib
    
 vtkRenderingFreeType-8.2.lib
    
 vtkRenderingGL2PSOpenGL2-8.2.lib
    
 vtkRenderingImage-8.2.lib
    
 vtkRenderingLabel-8.2.lib
    
 vtkRenderingLOD-8.2.lib
    
 vtkRenderingOpenGL2-8.2.lib
    
 vtkRenderingVolume-8.2.lib
    
 vtkRenderingVolumeOpenGL2-8.2.lib
    
 vtksqlite-8.2.lib
    
 vtksys-8.2.lib
    
 vtktheora-8.2.lib
    
 vtktiff-8.2.lib
    
 vtkverdict-8.2.lib
    
 vtkViewsContext2D-8.2.lib
    
 vtkViewsCore-8.2.lib
    
 vtkViewsInfovis-8.2.lib
    
 vtkzlib-8.2.lib

5.6 然后点击 本地Windows调试器 运行

双击鼠标左键,在图片上进行横向或纵向拖动即可完成窗宽窗位的调节。

至此,ITK读取、VTK显示png图像(手动配置ITK和VTK环境)完成!!!

全部评论 (0)

还没有任何评论哟~