【医疗图像库ITK4.12+VS2015在Win10下配置详解】

   鉴于现在网上关于ITK的学习资料少之又少,国内也只有一些医疗企业使用,适用面不广,但又必不可少。关于ITK较为新版本的配置说明几乎没有,本人在参阅大量相关配置说明,填了说不清的坑之后,总结了本篇较为全面的ITK配置说明,用的都是最新的版本。本身软件与系统都在更新迭代,现在新学的人没必要再去用老的版本去学习使用。

   InsightToolKit(以下简称ITK)是一个开放源码、面向对象的软件系统,提供了一个医学图像处理、图像分割与配准的算法平台。我们在使用ITK时,首先就是要对ITK的源码进行编译,接下来笔者就详细介绍一下ITK的编译过程。我们这里以最新的VS2015+ITK-4.12.2+CMake-3.12.1为蓝本讲解编译过程。

  1. VS2015

    我们假设已经安装好了Visual Studio 2015,在这里我们就不讲解如何安装VS了,不知道如何安装的小伙伴可以找一下度娘。

  2. 下载ITK

    到ITK的官网下载ITK,连接如下:https://cmake.org/download/。打开网站是下面这个样子的:

  3. 这里写图片描述

    推荐下载第三个Zip的压缩包,点击下载即可!

  4. 下载CMake

    我们当然也是到CMake的官网去下载啦,链接如下:https://cmake.org/download/。打开官网是这个样子的:

    扫描二维码关注公众号,回复: 3625623 查看本文章
  5. 创建编译目录

    我们在自己的电脑中选择一个路径存放我们即将要编译的文件,我们假设选择D盘存放我们的文件,接下来我们需要在D盘的根目录下创建一个空文件夹,文件夹命名为ITK-4.12,我们在该文件夹同级目录下创建以下四个文件夹:

  • Source 将下载的ITK的所有源文件解压到该文件夹下

  • CMake 将下载的CMake的所有文件解压到该文件夹下,

  • Build 空文件夹,用于存放ITK即将编译后的文件
  • Bin 空文件夹,用于存放以后开发中所用到的头文件以及共享库等

6. 配置CMake

打开刚才创建完成的CMake文件夹,在bin目录下找到cmake-gui.exe

双击该应用程序,弹出如下窗口,点击Browse Source按钮选择我们的Source目录,点击Browse Build按钮选择我们的之前创建的Build目录,选择完点击“Gconfig”之后应该是下面这个样子:

这里写图片描述

7. 注意注意:重点来啦!!!接下来的配置将决定你后续是否能生成成功!BUILD_EXAMPLES和BUILD_TESTING这两个选项很多博客上说可选可不选,实际上通过本人的两天实践,是一定不能选的,选的话下面的生成步骤是根本进行不下去。切记,不要选!

接下来我们需要打开Advanced选项,将CMAKE_INSTALL_PREFIX选项设置到我们之前创建的D:\ITK-4.12\Bin文件夹,这个选项不更改的话,后续在VS进行编译的时候就会报错。找到BUILD_SHARED_LIBS选项,我们也需要进行手动勾选,勾选该选项会生成动态链接库dll文件。

8. 完成以上步骤之后就可以点击Configure按钮进行配置了,点击Configure按钮,选择对应的编译器。重点又来了,这点还是个坑,现在基本都是64位系统,本人用的vs2015,所以选择编译器是应该选win64,一定要根据自己的编译器与系统选择决定,否则后面全白弄。配置完成之后CMake界面是会显示下面这个样子,提示Configure done配置完成!

这里写图片描述

9. VS编译运行

打开VS等它加载完之后是下面这个样子的:

10. 根据上面选择的编译器,现在默认就是x64,接下看下图,我们选择解决方案资源管理器中的ALL_BUILD工程,然后选择菜单栏下的生成ALL_BUILD选项,VS便会在底部的输出窗口中显示编译的内容,这个编译过程在我的surfacebook(i7版本)上大概10分钟,如果没有错误便会在输出窗口中显示生成成功xxx个。

上述操作之后,在我们建立的目录中成功编译出下列文件。

11. 看到bin,include,lib三个文件,如果之前学习图像处理的同学配置过Opencv的话应该很熟悉接下来的配置了(不在详细阐述),百度即可。不过注意修改环境变量,并把bin目录下的.dll文件全部copy到C:\Windows\System32目录下。

最后用一个小程序验证配置成功性:

#include "itkImage.h"
#include <iostream>
using namespace std;
using namespace itk;
int main()
{
	typedef Image<unsigned short, 3> ImageType;
	ImageType::Pointer image = ImageType::New();
	cout << "ITK Hello World!" << endl;
	system("pause");
	return 0;
}

输出结果:

猜你喜欢

转载自blog.csdn.net/qq_35054151/article/details/82019357