手动配置(非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环境)完成!!!
