所用的ITK和VTK是已经编译好的,如果没有编译,需要自己进行编译。
1、配置环境变量
双击【此电脑】,右键单击【此电脑】,选择【属性】,单击【高级系统设置】,在【高级】菜单页面下,选择【环境变量】,在【系统变量】菜单中选择【Path】变量,进行【 编辑】,在【编辑环境变量】界面中选择【新建】,添加VTK和ITK的bin文件的路径。如下图所示
2、配置属性表1
打开VS,新建一个空项目,在菜单栏中单击【视图】,选择【属性管理器】
(1)配置全局属性表
全局属性表配置好之后,每次新建项目不需要再重新配置。
在【Debug|Win32】目录下,双击【Microsoft.Cpp.Win32.user】打开属性页,进行配置。
(2)配置局部属性表
配置好局部属性表之后,可以将属性表进行保存,每次新建项目后需要将保存的属性表添加到属性管理器中。
在【Debug|Win32】目录下,右键单击【Debug|Win32】,选择【添加新项目属性表】,进行配置。
在【Debug|Win32】目录下,右键单击【Debug|Win32】,选择【添加现有属性表】,将之前配置好的属性表添加到属性表中。
3、配置属性表2
在打开的【属性页】中进行如下配置
在【通用属性】下单击【VC++目录】,选择【包含目录】,单击【编辑】,添加如下路径:
ITK:
D:\ProgramFiles\InsightToolkit-4.8.0\include\ITK-4.8\win32-vc8
D:\ProgramFiles\InsightToolkit-4.8.0\include\ITK-4.8
D:\ProgramFiles\InsightToolkit-4.8.0\include
VTK:
D:\ProgramFiles\VTK-6.3.0\include\vtk-6.3
D:\ProgramFiles\VTK-6.3.0\include
在【通用属性】下单击【VC++目录】,选择【库目录】,单击【编辑】,添加如下路径:
ITK:
D:\ProgramFiles\InsightToolkit-4.8.0\lib
VTK:
D:\ProgramFiles\VTK-6.3.0\lib
在【通用属性】下单击【链接器】,选择【输入】,选择【附加依赖项】,添加如下依赖项:
ITK:
ITKBiasCorrection-4.8.lib
ITKBioCell-4.8.lib
ITKCommon-4.8.lib
ITKDICOMParser-4.8.lib
itkdouble-conversion-4.8.lib
ITKEXPAT-4.8.lib
ITKFEM-4.8.lib
itkgdcmcharls-4.8.lib
itkgdcmCommon-4.8.lib
itkgdcmDICT-4.8.lib
itkgdcmDSED-4.8.lib
itkgdcmIOD-4.8.lib
itkgdcmjpeg8-4.8.lib
itkgdcmjpeg12-4.8.lib
itkgdcmjpeg16-4.8.lib
itkgdcmMEXD-4.8.lib
itkgdcmMSFF-4.8.lib
itkgdcmopenjpeg-4.8.lib
itkgdcmsocketxx-4.8.lib
ITKgiftiio-4.8.lib
itkhdf5_cpp-4.8.lib
itkhdf5-4.8.lib
ITKIOBioRad-4.8.lib
ITKIOBMP-4.8.lib
ITKIOCSV-4.8.lib
ITKIOGDCM-4.8.lib
ITKIOGE-4.8.lib
ITKIOGIPL-4.8.lib
ITKIOHDF5-4.8.lib
ITKIOImageBase-4.8.lib
ITKIOIPL-4.8.lib
ITKIOJPEG-4.8.lib
ITKIOLSM-4.8.lib
ITKIOMesh-4.8.lib
ITKIOMeta-4.8.lib
ITKIOMRC-4.8.lib
ITKIONIFTI-4.8.lib
ITKIONRRD-4.8.lib
ITKIOPNG-4.8.lib
ITKIOSiemens-4.8.lib
ITKIOSpatialObjects-4.8.lib
ITKIOStimulate-4.8.lib
ITKIOTIFF-4.8.lib
ITKIOTransformBase-4.8.lib
ITKIOTransformHDF5-4.8.lib
ITKIOTransformInsightLegacy-4.8.lib
ITKIOTransformMatlab-4.8.lib
ITKIOVTK-4.8.lib
ITKIOXML-4.8.lib
itkjpeg-4.8.lib
ITKKLMRegionGrowing-4.8.lib
ITKLabelMap-4.8.lib
ITKMesh-4.8.lib
ITKMetaIO-4.8.lib
itkNetlibSlatec-4.8.lib
ITKniftiio-4.8.lib
ITKNrrdIO-4.8.lib
ITKOptimizers-4.8.lib
ITKOptimizersv4-4.8.lib
ITKPath-4.8.lib
itkpng-4.8.lib
ITKPolynomials-4.8.lib
ITKQuadEdgeMesh-4.8.lib
ITKSpatialObjects-4.8.lib
ITKStatistics-4.8.lib
itksys-4.8.lib
itktiff-4.8.lib
itkv3p_lsqr-4.8.lib
itkv3p_netlib-4.8.lib
itkvcl-4.8.lib
ITKVideoCore-4.8.lib
ITKVideoIO-4.8.lib
itkvnl_algo-4.8.lib
itkvnl-4.8.lib
ITKVNLInstantiation-4.8.lib
ITKVTK-4.8.lib
ITKWatersheds-4.8.lib
itkzlib-4.8.lib
ITKznz-4.8.lib
VTK:
vtkalglib-6.3.lib
vtkChartsCore-6.3.lib
vtkCommonColor-6.3.lib
vtkCommonComputationalGeometry-6.3.lib
vtkCommonCore-6.3.lib
vtkCommonDataModel-6.3.lib
vtkCommonExecutionModel-6.3.lib
vtkCommonMath-6.3.lib
vtkCommonMisc-6.3.lib
vtkCommonSystem-6.3.lib
vtkCommonTransforms-6.3.lib
vtkDICOMParser-6.3.lib
vtkDomainsChemistry-6.3.lib
vtkexoIIc-6.3.lib
vtkexpat-6.3.lib
vtkFiltersAMR-6.3.lib
vtkFiltersCore-6.3.lib
vtkFiltersExtraction-6.3.lib
vtkFiltersFlowPaths-6.3.lib
vtkFiltersGeneral-6.3.lib
vtkFiltersGeneric-6.3.lib
vtkFiltersGeometry-6.3.lib
vtkFiltersHybrid-6.3.lib
vtkFiltersHyperTree-6.3.lib
vtkFiltersImaging-6.3.lib
vtkFiltersModeling-6.3.lib
vtkFiltersParallel-6.3.lib
vtkFiltersParallelImaging-6.3.lib
vtkFiltersProgrammable-6.3.lib
vtkFiltersSelection-6.3.lib
vtkFiltersSMP-6.3.lib
vtkFiltersSources-6.3.lib
vtkFiltersStatistics-6.3.lib
vtkFiltersTexture-6.3.lib
vtkFiltersVerdict-6.3.lib
vtkfreetype-6.3.lib
vtkftgl-6.3.lib
vtkGeovisCore-6.3.lib
vtkgl2ps-6.3.lib
vtkGUISupportQt-6.3.lib
vtkGUISupportQtOpenGL-6.3.lib
vtkGUISupportQtSQL-6.3.lib
vtkGUISupportQtWebkit-6.3.lib
vtkhdf5_hl-6.3.lib
vtkhdf5-6.3.lib
vtkImagingColor-6.3.lib
vtkImagingCore-6.3.lib
vtkImagingFourier-6.3.lib
vtkImagingGeneral-6.3.lib
vtkImagingHybrid-6.3.lib
vtkImagingMath-6.3.lib
vtkImagingMorphological-6.3.lib
vtkImagingSources-6.3.lib
vtkImagingStatistics-6.3.lib
vtkImagingStencil-6.3.lib
vtkInfovisCore-6.3.lib
vtkInfovisLayout-6.3.lib
vtkInteractionImage-6.3.lib
vtkInteractionStyle-6.3.lib
vtkInteractionWidgets-6.3.lib
vtkIOAMR-6.3.lib
vtkIOCore-6.3.lib
vtkIOEnSight-6.3.lib
vtkIOExodus-6.3.lib
vtkIOExport-6.3.lib
vtkIOGeometry-6.3.lib
vtkIOImage-6.3.lib
vtkIOImport-6.3.lib
vtkIOInfovis-6.3.lib
vtkIOLegacy-6.3.lib
vtkIOLSDyna-6.3.lib
vtkIOMINC-6.3.lib
vtkIOMovie-6.3.lib
vtkIONetCDF-6.3.lib
vtkIOParallel-6.3.lib
vtkIOParallelXML-6.3.lib
vtkIOPLY-6.3.lib
vtkIOSQL-6.3.lib
vtkIOVideo-6.3.lib
vtkIOXML-6.3.lib
vtkIOXMLParser-6.3.lib
vtkjpeg-6.3.lib
vtkjsoncpp-6.3.lib
vtklibxml2-6.3.lib
vtkmetaio-6.3.lib
vtkNetCDF_cxx-6.3.lib
vtkNetCDF-6.3.lib
vtkoggtheora-6.3.lib
vtkParallelCore-6.3.lib
vtkpng-6.3.lib
vtkproj4-6.3.lib
vtkRenderingAnnotation-6.3.lib
vtkRenderingContext2D-6.3.lib
vtkRenderingContextOpenGL-6.3.lib
vtkRenderingCore-6.3.lib
vtkRenderingFreeType-6.3.lib
vtkRenderingGL2PS-6.3.lib
vtkRenderingImage-6.3.lib
vtkRenderingLabel-6.3.lib
vtkRenderingLIC-6.3.lib
vtkRenderingLOD-6.3.lib
vtkRenderingOpenGL-6.3.lib
vtkRenderingQt-6.3.lib
vtkRenderingVolume-6.3.lib
vtkRenderingVolumeOpenGL-6.3.lib
vtksqlite-6.3.lib
vtksys-6.3.lib
vtktiff-6.3.lib
vtkverdict-6.3.lib
vtkViewsContext2D-6.3.lib
vtkViewsCore-6.3.lib
vtkViewsInfovis-6.3.lib
vtkViewsQt-6.3.lib
vtkzlib-6.3.lib
单击【确定】
4、测试
ITK:
#include <iostream>
#include "itkImage.h"
using namespace std;
int main()
{
typedef itk::Image<unsigned short, 3> ImageType;
ImageType::Pointer image = ImageType::New();
cout << "ITK Hello World !" << endl;
getchar();
return 0;
}
VTK:
//
// This simple example shows how to do basic rendering and pipeline
// creation using C++.
//
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkProperty.h"
#include "vtkCamera.h"
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
int main()
{
// This creates a polygonal cylinder model with eight circumferential facets.
//
vtkCylinderSource *cylinder = vtkCylinderSource::New();
cylinder->SetResolution(8);
// The mapper is responsible for pushing the geometry into the graphics
// library. It may also do color mapping, if scalars or other attributes
// are defined.
//
vtkPolyDataMapper *cylinderMapper = vtkPolyDataMapper::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
// The actor is a grouping mechanism: besides the geometry (mapper), it
// also has a property, transformation matrix, and/or texture map.
// Here we set its color and rotate it -22.5 degrees.
vtkActor *cylinderActor = vtkActor::New();
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(1.0000, 0.3882, 0.2784);
cylinderActor->RotateX(30.0);
cylinderActor->RotateY(-45.0);
// Create the graphics structure. The renderer renders into the
// render window. The render window interactor captures mouse events
// and will perform appropriate camera or actor manipulation
// depending on the nature of the events.
//
vtkRenderer *ren1 = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
// Add the actors to the renderer, set the background and size
//
ren1->AddActor(cylinderActor);
ren1->SetBackground(0.1, 0.2, 0.4);
renWin->SetSize(200, 200);
// We'll zoom in a little by accessing the camera and invoking a "Zoom"
// method on it.
ren1->ResetCamera();
ren1->GetActiveCamera()->Zoom(1.5);
renWin->Render();
// This starts the event loop and as a side effect causes an initial render.
iren->Start();
// Exiting from here, we have to delete all the instances that
// have been created.
cylinder->Delete();
cylinderMapper->Delete();
cylinderActor->Delete();
ren1->Delete();
renWin->Delete();
iren->Delete();
return 0;
}
结果显示如下图则VTK安装成功
5、Error:
运行VTK程序会提示如下错误:
Error:no override found for 'vtkPolyDataMapper'
出错的原因是:
在VS中直接建的工程在编译时直接用的本地编译器,而不是用cmake进行编译的,因此会有一些宏定义没有定义。
解决方法:
添加如下语句
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)