接下来的课题需要用到 ITK,需要对其配置,同 Opencv,ITK 也是一个库,先后尝试过 VS2013 和 VS2010,均出现CMake编译出错,就差在LInux下编译了。后来终于在VS2008下配置成功。
PS:后来在VS2012下配置成功,分析了一下,应该是CMake上面指定的编译器版本没有与VS2013匹配的,VS2012对应的是Visual Studio 11,CMake上面支持这个版本,VS2012配置ITK和VS2008配置一样,只不过在CMake选择编译器的时候选择 Visual Studio 11。
1. 下载 ITK http://www.itk.org/ITK/resources/software.html 这里是InsightToolkit-4.5.1
2. 下载 CMake http://www.cmake.org/cmake/resources/software.html 这里是CMake-2.8.12.2
3. Visual Studio 2008
4. 在 D 盘建立新文件夹ITK,D:\ITK\ITK_bin (暂时不涉及到VTK),将下载的 InsightToolkit-4.5.1.zip 解压缩到 D:\ITK 中,即D:\ITK\InsightToolkit-4.5.1
5. CMake 编译
where is the source code:D:/ITK/InsightToolkit-4.5.1
where to build the binaries:D:/ITK/ITK_bin
点击 Configure 选择 Visual Studio 2008,然后 Finish。CMake 则会自动Configuring。
提示 Configuring complete 后,CMake 面板会出现红色栏,然后点击 Advanced 选项,将CMAKE_INSTALL_PREFIX 改为 D:/ITK。然后 Generate。
6. VS2008 编译
CMake 成功后,用 VS2008 打开 D:\ITK\ITK_bin 下的 ITK.sln,生成 --> 生成解决方案。
编译完 ITK 后,再编译 INSTALL 工程,右键 INSTALL,设为启动项,然后编译。(期间也右键 INSTALL--> 仅用于项目 --> 仅生成INSTALL )
编译完后,D:/ITK 目录会生成 lib,include两个文件夹(share,bin 没多大用)
lib 存放的是 D:/ITK/ITK_bin/bin/debug 中的 ITK lib 文件;
include 存放的是 ITK 所有的头文件。
7. 配置 ITK 环境
这是最关键的也是最繁琐的一部分。
7.1 添加环境变量 D:\ITK\ITK_bin
7.2 添加 include 文件
新建一项目,然后选择 工具--> 选项 --> 项目和解决方案 --> VC++ 目录
在右边选择 包含文件,添加以下部分(可能有重复,但是我这样添加是成功的)
7.3 添加 lib 文件
同上,选择 库文件
7.4 添加 附加依赖项
项目 --> “项目” 属性--> 配置属性 --> 链接器 --> 输入 --> 附加依赖项
添加以下内容(一个一个弄出来的,包含全部)
ITKBiasCorrection-4.5.lib ITKBioCell-4.5.lib ITKCommon-4.5.lib ITKDICOMParser-4.5.lib itkdouble-conversion-4.5.lib ITKEXPAT-4.5.lib ITKFEM-4.5.lib itkgdcmCommon-4.5.lib itkgdcmDICT-4.5.lib itkgdcmDSED-4.5.lib itkgdcmIOD-4.5.lib itkgdcmjpeg8-4.5.lib itkgdcmjpeg12-4.5.lib itkgdcmjpeg16-4.5.lib itkgdcmMSFF-4.5.lib ITKgiftiio-4.5.lib itkhdf5_cpp-4.5.lib itkhdf5-4.5.lib ITKIOBioRad-4.5.lib ITKIOBMP-4.5.lib ITKIOCSV-4.5.lib ITKIOGDCM-4.5.lib ITKIOGE-4.5.lib ITKIOGIPL-4.5.lib ITKIOHDF5-4.5.lib ITKIOImageBase-4.5.lib ITKIOIPL-4.5.lib ITKIOJPEG-4.5.lib ITKIOLSM-4.5.lib ITKIOMesh-4.5.lib ITKIOMeta-4.5.lib ITKIOMRC-4.5.lib ITKIONIFTI-4.5.lib ITKIONRRD-4.5.lib ITKIOPNG-4.5.lib ITKIOSiemens-4.5.lib ITKIOSpatialObjects-4.5.lib ITKIOStimulate-4.5.lib ITKIOTIFF-4.5.lib ITKIOTransformBase-4.5.lib ITKIOTransformHDF5-4.5.lib ITKIOTransformInsightLegacy-4.5.lib ITKIOTransformMatlab-4.5.lib ITKIOVTK-4.5.lib ITKIOXML-4.5.lib itkjpeg-4.5.lib ITKKLMRegionGrowing-4.5.lib ITKLabelMap-4.5.lib ITKMesh-4.5.lib ITKMetaIO-4.5.lib itkNetlibSlatec-4.5.lib ITKniftiio-4.5.lib ITKNrrdIO-4.5.lib itkopenjpeg-4.5.lib ITKOptimizers-4.5.lib ITKPath-4.5.lib itkpng-4.5.lib ITKPolynomials-4.5.lib ITKQuadEdgeMesh-4.5.lib ITKSpatialObjects-4.5.lib ITKStatistics-4.5.lib itksys-4.5.lib itktiff-4.5.lib itkv3p_lsqr-4.5.lib itkv3p_netlib-4.5.lib itkvcl-4.5.lib ITKVideoCore-4.5.lib ITKVideoIO-4.5.lib itkvnl_algo-4.5.lib itkvnl-4.5.lib ITKVNLInstantiation-4.5.lib ITKVTK-4.5.lib ITKWatersheds-4.5.lib itkzlib-4.5.lib ITKznz-4.5.lib
至此,大功告成
8 测试(官网手册程序)
#include <iostream> #include "itkImage.h" using namespace std; int main() { typedefitk::Image<unsigned short, 3> ImageType; ImageType::Pointerimage = ImageType::New(); cout<< "ITK Hello World !" << endl; return 0; }