ITK/ITK+VTK 安装/测试入门
---MXSF
2007-10-15整理
VTK/ITK介绍[略…]
一 下载安装文件
①VTK
VTK开发包的下载可以到Kitware公司的主页上查找到并下载,地址为
http://www.vtk.org/get-software.php
需要下载到的文件有:
vtk-5.0.2.zip
vtk的源码
vtkdata-5.0.2.zip
vtk例子所需要的数据
vtkDocHtml-5.0.2.tar.gz
vtk类库帮助文档
vtk-5.0.2-win32.exe
windows安装文件,可直接用于执行VTK DocHtml帮助中下载的xx.tcl文件
目前最新版本为5.0.3
②CMake
Cmake安装文件可以到Kitware公司的主页上查找到并下载,地址为
http://www.cmake.org/HTML/Index.html
目前最新版本为2.4.7
③ITK
ITK开发包的下载可以到Kitware公司的主页上查找到并下载,地址为
http://www.itk.org/HTML/Download.htm
需要下载到的文件有:
ITK Software Guide 2.4.0 PDF
InsightToolkit-3.4.0.zip
ITK的安装文件
InsightApplications-3.4.0.zip
用于链接ITK与VTK
DoxygenInsightToolkit-3.4.0.zip
ITK类库帮助手册
CableSwig-ITK-3.4.0.zip
目前最新版本3.4.0
本人选用的编译器是vc6.0
二 软件安装
关键在于Cmake的配置!ITK的编译过程比VTK时间还要长,产生的文件要大很多,以本人及其配置为例:Dell D620/1.68GHz/1G内存/256独显 编译Itk花了近3小时,产生5G左右的文件
①首先在E盘根目录下新建如下两文件夹
两文件夹展开如下:
VTK5.0.2
放置由vtk-5.0.2.zip解压得到的文件
VTK_bin
放置编译后的文件
VTK_Install
放置安装文件,例如Include/bin/lib文件,供开发使用
VTKData5.0.2
放置由vtkdata-5.0.2.zip解压得到的文件
InsightApplications
放置InsightApplications-3.4.0.zip解压得到的文件
InsightToolkit
放置InsightToolkit-3.4.0.zip解压得到的文件
ITK_bin
放置编译后的InsightToolkit
文件
ITK_Install
放置安装文件,例如Include/bin/lib文件,供开发使用
ITKApplication_bin
放置编译后的InsightApplications文件
②安装Cmake文件,安装地点可由用户自定。
③安装VTK,Cmake配置如下:
为后面顺利进行与ITK的编程,勾选Show Advanced Values选项,详细设置如下:
部分选项说明如下:
1. vtk_data_root:目的是告诉cmake,vtk 需要的数据都在哪里,一般地,cmake 可以自己找到vtkdata 的路径,但如果没有,把E:\vtk5\vtkData5.0.2
2. cmake_install_prefix: 这个比较重要,就是以后要安装vtk 的路径。安装的好处就是可以从 1G 多的文件中提取出.h .lib .dll 等精华,安装在指定目录下,并修改系统环境变量。这里我是: C:/Program Files/VTK
3. build_examples: 就是询问是否编译vtk 中的例子,如选则on,就要花时间把vtk的例子编译一遍。
4. build_testing: test code 就是vtk 开发者用来测试 vtk 代码的一些测试代码,我们常常把它们当成学习vtk 的例子,与build_examples 类似,是否编译他们,看个人喜好。
5. build_shared_libs: 如果设置为off,就只会生成lib 文件,用于开发肯定是够了。如果设置为on,将会多生成dll 文件。不过建议设置为on。
6. vtk_use_parallel: 如果想用vtk 做并行计算,要把这个选上,否则保持默认off。
7.
提示:在cmake 中,有些选项是依赖于另一些选项的,比如vtk_use_guisupport 和
vtk_use_mfc,当我们禁用vtk_use_guisupport,vtk_use_mfc 是看不到的。
修改完cmake 选项以后,不停的按configure 按钮,直到没有选项显示为红色,而且
此时,ok 按钮可用,点击ok 按钮,就可以生成vc 的
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
文件了。
VC中的link设置:
[opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib vtkCommon.lib vtkDICOMParser.lib vtkexoIIc.lib vtkexpat.lib vtkFiltering.lib vtkfreetype.lib vtkftgl.lib vtkGenericFiltering.lib vtkGraphics.lib vtkHybrid.lib vtkImaging.lib vtkIO.lib vtkjpeg.lib vtkMPEG2Encode.lib vtkNetCDF.lib vtkpng.lib vtkRendering.lib vtksys.lib vtktiff.lib vtkVolumeRendering.lib vtkWidgets.lib vtkzlib.lib]
④安装ITK,Cmake配置如下:
以下是编译InsightApplications时的Cmake设置
其参数具体设置如下:
其中vtk-dir参数用于设置itk与vtk之间的链接.
⑤在各个XXX-bin文件夹中,再次利用VC编译VTK.dsw /ITK.dsw/ InsightApplications.dsw文件即可
三 ITK/ITK+VTK程序测试
①ITK 程序测试
Hello World 程序
在D:\VTK_research\Programm_VTK\ITK_HelloWorld目录下编写如下两文件:
HelloWorld.cxx 代码如下:
#include "itkImage.h"
#include
int main()
{
typedef itk::Image< unsigned short, 3 > ImageType;
ImageType::Pointer image = ImageType::New();
std::cout << "ITK Hello World !" << std::endl;
return 0;
}
CMakeLists.txt 代码如下:
PROJECT(HelloWorld)
# Find ITK.
FIND_PACKAGE(ITK REQUIRED)
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE})
ENDIF(ITK_FOUND)
ADD_EXECUTABLE(HelloWorld HelloWorld.cxx )
TARGET_LINK_LIBRARIES(HelloWorld ITKCommon)
可在E:\ITK3\InsightToolkit\Examples\Installation目录下找到上述两文件,直接Copy过来即可
利用Cmake编译后生成ITK_HelloWorld-bin文件,Cmake设置如下:
利用VC编辑HelloWorld.dsw,执行HelloWorld.exe,即出现如下画面:
②ITK+VTK 程序测试
VTK_ITK_Sample程序
利用VC6新建一单文档界面工程 VTK_ITK_Sample ,然后留下如下文件及文件夹,其余全部删除:
MainFrm.h
MainFrm.cpp
VTK_ITK_Sample.h
VTK_ITK_Sample.cpp
VTK_ITK_SampleDoc.h
VTK_ITK_SampleDoc.cpp
VTK_ITK_SampleView.h
VTK_ITK_SampleView.cpp
stdafx.h
stdafx.cpp
resource.h
VTK_ITK_Sample.rc
注:保留res文件夹和Debug文件夹。
CmakeLists.txt编写如下:
PROJECT(VTK_ITK_Sample)
ADD_DEFINITIONS(-D_AFXDLL)
SET(CMAKE_MFC_FLAG 6)
#
# Define the list of source files
#
SET(APPLICATION_SOURCES
MainFrm.h
MainFrm.cpp
VTK_ITK_Sample.h
VTK_ITK_Sample.cpp
VTK_ITK_SampleDoc.h
VTK_ITK_SampleDoc.cpp
VTK_ITK_SampleView.h
VTK_ITK_SampleView.cpp
stdafx.h
stdafx.cpp
resource.h
VTK_ITK_Sample.rc
)
IF(WIN32)
LINK_LIBRARIES(
wsock32
)
ENDIF(WIN32)
# Find ITK
FIND_PACKAGE(ITK)
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE})
ELSE(ITK_FOUND)
MESSAGE(FATAL_ERROR
"Cannot build without ITK. Please set ITK_DIR.")
ENDIF(ITK_FOUND)
# Find VTK
FIND_PACKAGE(VTK)
IF(VTK_FOUND)
INCLUDE(${VTK_USE_FILE})
ELSE(VTK_FOUND)
MESSAGE(FATAL_ERROR "Cannot build without VTK. Please set VTK_DIR.")
ENDIF(VTK_FOUND)
ADD_EXECUTABLE (VTK_ITK_Sample WIN32 ${APPLICATION_SOURCES})
TARGET_LINK_LIBRARIES (VTK_ITK_Sample ITKCommon ITKIO ITKNumerics ITKAlgorithms ITKBasicFilters)
新建VTK_ITK_Sample-bin(用于放置经Cmake编译后的文件)和VTK_ITK_Sample-Install(目前用处不大,空文件夹)文件夹,如下图:
利用Cmake编译后生成VTK_ITK_Sample-bin文件,Cmake设置如下:
利用VC打开VTK_ITK_Sample.dsw,在其中编写如下代码:
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageToVTKImageFilter.h"
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
void CVTK_ITK_SampleView::OnSimplesample()
{
// TODO: Add your command handler code here
typedef itk::Image< unsigned short, 2 > ImageType;
typedef itk::ImageFileReader ReaderType;
typedef itk::ImageToVTKImageFilter< ImageType>
FilterType;
ReaderType::Pointer reader = ReaderType::New();
FilterType::Pointer connector = FilterType::New();
reader->SetFileName("D:\\VTK_research\\Programm_VTK\\test.dcm");
connector->SetInput( reader->GetOutput() );
vtkImageViewer * viewer = vtkImageViewer::New();
vtkRenderWindowInteractor * renderWindowInteractor = vtkRenderWindowInteractor::New();
viewer->SetupInteractor( renderWindowInteractor );
viewer->SetInput( connector->GetOutput() );
viewer->Render();
viewer->SetColorWindow( 255 );
viewer->SetColorLevel( 128 );
renderWindowInteractor->Start();
}
并在Project-〉Setting-〉link中Object/library modules再添加VTK的.lib文件名即可,如下:
vtkCommon.lib vtkDICOMParser.lib vtkexoIIc.lib vtkexpat.lib vtkFiltering.lib vtkfreetype.lib vtkftgl.lib vtkGenericFiltering.lib vtkGraphics.lib vtkHybrid.lib vtkImaging.lib vtkIO.lib vtkjpeg.lib vtkMPEG2Encode.lib vtkNetCDF.lib vtkpng.lib vtkRendering.lib vtksys.lib vtktiff.lib vtkVolumeRendering.lib vtkWidgets.lib vtkzlib.lib
编译后会发现找不到itkImageToVTKImageFilter.h文件,在E:\ITK3\InsightApplications\Auxiliary\vtk中把
两文件Copy到VTK_ITK_Sample文件夹中,在CMakeLists.txt中把它们加进去,重新用Cmake编译下,最后,重新编译VTK_ITK_Sample.dsw,执行VTK_ITK_Sample.exe,如图所示:
OVER…
Good Luck!!