QtCreator或VS2013下VTK与ITK环境搭建教程.doc_第1页
QtCreator或VS2013下VTK与ITK环境搭建教程.doc_第2页
QtCreator或VS2013下VTK与ITK环境搭建教程.doc_第3页
QtCreator或VS2013下VTK与ITK环境搭建教程.doc_第4页
QtCreator或VS2013下VTK与ITK环境搭建教程.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QtCreator或VS2013下VTK与ITK环境搭建教程孙宇 2015.11.11中科院深圳先进技术研究院小编为了跟随时代潮流,所有版本都选择了最新的:VTK6.3,ITK4.8,Qt5.5及VS2013旗舰版Update5,其实啥版本都一样,过程都是一样的!顺便说下CMake3.4以及openCV3.0以及一个TCP通信用的OpenIGTLink!把该下载的下载了,去官网下就好,下面一个一个说!FIRST: VS2013啥也不说了,在ITELLYOU上下载安装即可:/VS2013本体:ed2k:/|file|cn_visual_studio_ultimate_2013_x86_dvd_3175316.iso|3077509120|ADDA34B2BC29E1571276AE50A220EB91|/VS2013 Update5升级包:ed2k:/|file|cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso|5567336448|641555AD6472A98923B29CC5E371461E|/可能会有很多人问为啥非得用最新版啊,编译的库别的地方都用不了!好吧,萝卜白菜各有所爱,小编我不是慈善机构,不指望别的单位沿用我的代码,我选择新版是因为新版本编译时候不会发生各种各样的小BUG(是不是颠覆了一些人的认知?嘿嘿),而且最最最重要的是ITK对编译器的支持是有时限的,08版的快不被支持了。SECOND: QT5.5为啥把QT放前面呢,因为其它库编译时候会选择是否依赖它,所以要放第一个!QT常用的有Creator和VS集成版,对编译的库来说安啥都一样。小编我喜欢轻量级的IDE,所以以集成有VS版编译器的Creator为例进行说明。最方便的安装当然是online安装包:http:/www.qt.io/cn/download-open-source/直接下载了,点开运行,注册个免费账号后出现下面的界面 如图,把Qt5.5选中,其中Mingw和VS的编译器都勾选上,Tools中的Mingw也勾上后其它保持默认即可(小编把QT的云服务也勾上了,个人需求而已),一路安装至结束;当然下载离线安装包也是可以的,安装后运行目录中的MaintenanceTool.exe选择添加删除功能后也会出现这个界面。配置QT到VS的IDE上,还需要额外安装一个插件:Visual Studio Add-in xxx for Qt5,在 http:/www.qt.io/cn/download-open-source/ 这个网页中“其它下载”栏目里。然后在VS中配置QT5 - Qt Options - Add,添加QT5的如图安装目录:THIRD: SDK8.1为啥要安这个呢,因为VS的编译器只对应Creator的release,而Creator的debug需要用到这个SDK里的Debugging Tools for Windows(安装时只勾选这项即可)SDK:/en-us/windows/desktop/bg162891.aspxFOURTH: VTK6.3VTK这东西呢,属于比较底层的库了,编译openCV和ITK的时候都有是否编译VTK链接模块的选项,所以先装它!(如果用PYTHON的话,那在VTK之前要先装PYTHON)VTK:/download/需要哪个版本就下载哪个,小编下的最新的6.3,需要用到VTK源文件:VTK-6.3.0.zipVTK数据文件:VTKData-6.3.0.zip (不编例子的话可以不下载)小编做了很整齐的目录名!很赞吧!将源文件解压至VTK-src中,数据文件解压至VTK-dat中,然后新建两个目录VTK-bin和VTK-res,以后再说有啥用!打开CMAKE3.4然后把source code和binaries的路径敲上去,点击Configure如图所示:不要问我为啥选的32位的编译器,因为我们中心的电脑很渣,都是32的!推荐用64位!看到了没,新版VTK配置后是不是比老版的好多了!按需求决定是否勾选EXAMPLES和TESTING(新手的话还是勾上比较好,如果勾上就需要指定VTK-dat路径),然后把里面的CMAKE_INSTALL_PREFIX的路径改成VTK-res那个目录,下面的VTK_Group_Qt给勾选上,然后继续点Configure:它可能会跳出来如图的错误!不要担心!只是CMAKE没找到目录而已手动指定目录和QT的版本后重新Configure一下就好了,如果用的是64位的编译器,那qmake.exe要选择成msvc2013_64那个目录下的,同理Mingw。然后我们会惊奇的发现,它丫的又出错了!这次是Qt5的目录没找到!看到了吧,就是这个文件所在的文件夹没找到,手动指定下这个文件的目录如图所示。其中64位或Mingw的话同上所述,选择不同文件夹下的目录。之后应该就没有问题了!文本框中最后一行会出现Configuring done的字样,你点击下Generate就好了。进入你之前的VTK-bin目录,双击VTK.sln运行,选中ALL_BUILD后按F7开始编译。等待过程中可以去喝杯热咖啡,与好基友聊聊QQ啥的别被领导发现!放心吧,编译不会失败的,失败的话小编我活吞仓鼠!编译好后右键单击INSTALL选择仅用于项目 - 仅生成INSTALL,这样VTK所有需要的lib和dll及其它相关文件就全都自动复制到VTK-res目录下了!将VTK-res目录下的bin文件夹路径添加到系统的Path环境变量中,不会自己百度!至此VTK的编译结束了!感谢祖国!感谢人民!感谢CCTV!感谢胡老大!顺便一说,下面这两个库的下载地址:openCV是图像处理的集大成者:/downloads.htmlopenIGTLink是医疗影像通信的常用协议:/library.html以及下面是关于openIGTLink的使用教程(大师级代码,小白级操作)/Wiki/index.php/OpenIGTLink/Library/TutorialFIFTH: ITK4.8在这之前强烈建议先编译一下openCV3.0和openIGTLink,这里就不详细说了,因为主题只是VTK和ITK的编译,做图像处理openCV是必不可少的!交互的话通信也是必须的!ITK:/ITK/resources/software.html需要哪个版本就下载哪个,小编下的最新的4.8,需要用到ITK源文件:InsightToolkit-4.8.1.zipITK数据文件:InsightData-4.8.1.zip (不编例子的话可以不下载)同样先来一张文件夹全家福!这里不啰嗦了,和VTK那个是一样一样一样的!唯一需要注意的是,CMAKE用的编译器不要换!要不然可能会出问题!比如VTK用的32位VS,编ITK时也要用32位VS,小朋友们,记住了吗?连续多次的Configure过程中可能出现如下错误及其解决方法,其中一下列出的部分项需要启用CMAKE的Grouped和Advanced选项才能看到详细信息:BUILD_EXAMPLES 这个不要选,之后我会解释为什么BUILD_SHARED_LIBS 这个要勾选上CMAKE_INSTALL_PREFIX 路径改成你的ITK-res想要结合OpenCV或VTK做项目的话建议勾选:Module_ITKVideoBridgeOpenCV(电脑中需安装有OpenCV)Module_ITKV3Compatibility(同时需勾选ITKV3_COMPATIBILITY)Module_ITKVtkGlue(用于与VTK数据交互)其他推荐模块建议勾选(需在电脑中配置git):Module_SmoothingRecursiveYvvGaussianFilterModule_SubdivisionQuadEdgeMeshFilterModule_VariationalRegistration其它维持默认即可,如果有人很喜欢用DCMTK的话,那需要把这4个勾选上:Module_IOTransformDCMTKModule_ITKDCMTKModule_DeprecatedModule_ITKIODCMTK但是小编认为没必要这么做,因为我们已经用VTK了,DCMTK这部分在VTK里是有的!同VTK找到ITK.sln运行,并选中ALL_BUILD进行编译,编译后右键INSTALL进行安装和添加系统路径即可。PS:ITK的默认编译模块里包括一部分VTK的接口。最后说下为什么不选择编译例子,因为编译好的例子在ITK的官网上都是能找到的,所以没必要费时编译它!工程例子:/ITKExamples/src/Core/index.html文档例子:/Doxygen48/html/examples.html程序文档:/ItkSoftwareGuide.pdfSIXTH: TEST下面给出测试用代码,我是用Creator建立的工程:所在文件夹下建立Library文件夹,并在文件夹下建立两个txt文件,改名为LinkVTK和LinkITK,在两个文本文件里分别添加以下信息:#LinkVTK.pri:INCLUDEPATH += D:/VTK6.3/VTK-res/include/vtk-6.3LIBS += -LD:/VTK6.3/VTK-res/lib/ -lvtkCommonCore-6.3 -lxxxxxxxxxxxxxxxxxx .你懂的,小编我比较蠢,把所有的lib都链接上了,完整版后面放出,用VS编程的同学也是可以直接把所有的库都包含一下自己改INCLUDEPATH的路径!#LinkITK.pri:INCLUDEPATH += D:/ITK4.8/ITK-res/include/itk-4.8LIBS += -LD:/ITK4.8/ITK-res/lib/ -lITKCommon-4.8 -lxxxxxxxxxxxxxxx .将两个txt扩展名改成pri并包含进工程中,在pro文件中添加:include(Library/LinkVTK.pri)include(Library/LinkITK.pri)大功告成,下面放出测试代码:VTK部分:test.h -start#ifndef VTKFUNC_H#define VTKFUNC_H#include #include VTK_MODULE_INIT(vtkRenderingOpenGL)VTK_MODULE_INIT(vtkInteractionStyle)class VTKFUNC : public QObjectpublic: explicit VTKFUNC(QObject *parent = 0);public: QString getDICOMDir(); void readDICOMImage(QString imgDir);#endif / VTKFUNC_Htest.h -endtest.cpp-start#include test.h#include #include #include #include #include #include #include #include #include #include #include #include #include VTKFUNC:VTKFUNC(QObject *parent) : QObject(parent)QString VTKFUNC:getDICOMDir() return QFileDialog:getExistingDirectory(NULL, DICOM Directory, /home);void VTKFUNC:readDICOMImage(QString imgDir)typedef vtkSmartPointer SmartRenderer; typedef vtkSmartPointer SmartRenderWindow; typedef vtkSmartPointer SmartRenderWindowInteractor; SmartRenderer aRenderer = SmartRenderer:New(); SmartRenderWindow renWin = SmartRenderWindow:New();renWin-AddRenderer(aRenderer); SmartRenderWindowInteractor iren = SmartRenderWindowInteractor:New(); iren-SetRenderWindow(renWin); aRenderer-SetBackground(.2, .3, .4);renWin-SetSize(640, 480); typedef vtkSmartPointer SmartDICOMImageReader; SmartDICOMImageReader reader = SmartDICOMImageReader:New(); reader-SetDataByteOrderToLittleEndian(); reader-SetDirectoryName(imgDir.toStdString().c_str();reader-SetDataSpacing (3.2, 3.2, 1.5); typedef vtkSmartPointer SmartContourFilter; SmartContourFilter skinExtractor = SmartContourFilter:New(); skinExtractor-SetInputConnection(reader-GetOutputPort();skinExtractor-SetValue(0, 500); typedef vtkSmartPointer SmartPolyDataNormals; SmartPolyDataNormals skinNormals = SmartPolyDataNormals:New(); skinNormals-SetInputConnection(skinExtractor-GetOutputPort(); skinNormals-SetFeatureAngle(60.0); typedef vtkSmartPointer SmartPolyDataMapper; SmartPolyDataMapper skinMapper = SmartPolyDataMapper:New(); skinMapper-SetInputConnection(skinNormals-GetOutputPort();skinMapper-ScalarVisibilityOff(); typedef vtkSmartPointer SmartActor; SmartActor skin = SmartActor:New();skin-SetMapper(skinMapper); typedef vtkSmartPointer SmartCamera; SmartCamera aCamera = SmartCamera:New(); aCamera-SetViewUp (0, 0, -1); aCamera-SetPosition (0, 1, 0); aCamera-SetFocalPoint (0, 0, 0); aCamera-ComputeViewPlaneNormal(); aCamera-Azimuth(30.0); aCamera-Elevation(30.0); aRenderer-AddActor(skin); aRenderer-SetActiveCamera(aCamera); aRenderer-ResetCamera (); aCamera-Dolly(1.5); aRenderer-SetBackground(.2, .3, .4); renWin-SetSize(640, 480); aRenderer-ResetCameraClippingRange (); iren-Initialize();iren-Start();test.cpp-end调用方式如下:VTKFUNC *vtk = new VTKFUNC(this);vtk-readDICOMImage(vtk-getDICOMDir();在弹出的对话框中需要选择DICOM图像序列所在的文件夹!其中测试用的DICOM图像序列可以从下列地址获得,下CT那个TESTISIS即可:/midas/collection/view/26ITK部分:test.h -start#ifndef ITKFUNC_H#define ITKFUNC_H#include class ITKFUNC : public QObjectpublic: explicit ITKFUNC(QObject *parent = 0);public: void testITK();#endif / ITKFUNC_Htest.h -endtest.cpp-start#include test.h#include #include #include #include ITKFUNC:ITKFUNC(QObject *parent) : QObject(parent) itk:ObjectFactoryBase:RegisterFactory(itk:PNGImageIOFactory:New();void ITKFUNC:testITK() typedef unsigned char PixelType; typedef itk:Image ImageType; ImageType:SizeType size; size.Fill( 1000 ); typedef itk:RandomImageSource RandomSourceType; RandomSourceType:Pointer randomSource = RandomSourceType:New(); randomSource-SetNumberOfThreads(1); / to produce reproducible results randomSource-SetSize( size ); typedef itk:ImageFileWriter WriterType; WriterType:Pointer writer = WriterType:New(); writer-SetFileName( justTestITK.png ); writer-SetInput(randomSource-GetOutput(); try writer-Update(); catch( itk:ExceptionObject & error ) std:cerr Error: error testITK();这样会在编译目录下生成一张justTestITK.png图片:)构建教程至此结束,剩下的就是自我学习阶段了!大家加油!深圳市南山区学苑大道1068号集成所认知技术中心欢迎有志于医疗机器人的同学来我中心客座访问!中心主任:张建伟教授 执行主任:胡颖研究员#LinkVTK.pri中的具体内容:INCLUDEPATH += D:/VTK6.3/VTK-res/include/vtk-6.3LIBS += -LD:/VTK6.3/VTK-res/lib/ -lvtkalglib-6.3 -lvtkChartsCore-6.3 -lvtkCommonColor-6.3 -lvtkCommonCore-6.3 -lvtkCommonDataModel-6.3 -lvtkCommonExecutionModel-6.3 -lvtkCommonMath-6.3 -lvtkCommonMisc-6.3 -lvtkCommonSystem-6.3 -lvtkCommonTransforms-6.3 -lvtkDICOMParser-6.3 -lvtkDomainsChemistry-6.3 -lvtkexoIIc-6.3 -lvtkexpat-6.3 -lvtkFiltersAMR-6.3 -lvtkFiltersCore-6.3 -lvtkFiltersExtraction-6.3 -lvtkFiltersFlowPaths-6.3 -lvtkFiltersGeneral-6.3 -lvtkFiltersGeneric-6.3 -lvtkFiltersGeometry-6.3 -lvtkFiltersHybrid-6.3 -lvtkFiltersHyperTree-6.3 -lvtkFiltersImaging-6.3 -lvtkFiltersModeling-6.3 -lvtkFiltersParallel-6.3 -lvtkFiltersParallelImaging-6.3 -lvtkFiltersProgrammable-6.3 -lvtkFiltersSelection-6.3 -lvtkFiltersSMP-6.3 -lvtkFiltersSources-6.3 -lvtkFiltersStatistics-6.3 -lvtkFiltersTexture-6.3 -lvtkFiltersVerdict-6.3 -lvtkfreetype-6.3 -lvtkftgl-6.3 -lvtkGeovisCore-6.3 -lvtkgl2ps-6.3 -lvtkGUISupportQt-6.3 -lvtkGUISupportQtOpenGL-6.3 -lvtkGUISupportQtSQL-6.3 -lvtkGUISupportQtWebkit-6.3 -lvtkhdf5_hl-6.3 -lvtkhdf5-6.3 -lvtkImagingColor-6.3 -lvtkImagingCore-6.3 -lvtkImagingFourier-6.3 -lvtkImagingGeneral-6.3 -lvtkImagingHybrid-6.3 -lvtkImagingMath-6.3 -lvtkImagingMorphological-6.3 -lvtkImagingSources-6.3 -lvtkImagingStatistics-6.3 -lvtkImagingStencil-6.3 -lvtkInfovisCore-6.3 -lvtkInfovisLayout-6.3 -lvtkInteractionImage-6.3 -lvtkInteractionStyle-6.3 -lvtkInteractionWidgets-6.3 -lvtkIOAMR-6.3 -lvtkIOCore-6.3 -lvtkIOEnSight-6.3 -lvtkIOExodus-6.3 -lvtkIOExport-6.3 -lvtkIOGeometry-6.3 -lvtkIOImage-6.3 -lvtkIOImport-6.3 -lvtkIOInfovis-6.3 -lvtkIOLegacy-6.3 -lvtkIOLSDyna-6.3 -lvtkIOMINC-6.3 -lvtkIOMovie-6.3 -lvtkIONetCDF-6.3 -lvtkIOParallel-6.3 -lvtkIOParallelXML-6.3 -lvtkIOPLY-6.3 -lvtkIOSQL-6.3 -lvtkIOVideo-6.3 -lvtkIOXML-6.3 -lvtkIOXMLParser-6.3 -lvtkjpeg-6.3 -lvtkjsoncpp-6.3 -lvtklibxml2-6.3 -lvtkLocalExample-6.3 -lvtkmetaio-6.3 -lvtkNetCDF_cxx-6.3 -lvtkNetCDF-6.3 -lvtkoggtheora-6.3 -lvtkParallelCore-6.3 -lvtkpng-6.3 -lvtkproj4-6.3 -lvtkRenderingAnnotation-6.3 -lvtkRenderingContext2D-6.3 -lvtkRenderingContextOpenGL-6.3 -lvtkRenderingCore-6.3 -lvtkRenderingFreeType-6.3 -lvtkRenderingGL2PS-6.3 -lvtkRenderingImage-6.3 -lvtkRenderingLabel-6.3 -lvtkRenderingLIC-6.3 -lvtkRenderingLOD-6.3 -lvtkRenderingOpenGL-6.3 -lvtkRenderingQt-6.3 -lvtkRenderingVolume-6.3 -lvtkRenderingVolumeOpenGL-6.3 -lvtksqlite-6.3 -lvtksys-6.3 -lvtkTestingGenericBridge-6.3 -lvtkTestingIOSQL-6.3 -lvtkTestingRendering-6.3 -lvtktiff-6.3 -lvtkverdict-6.3 -lvtkViewsContext2D-6.3 -lvtkViewsCore-6.3 -lvtkViewsInfovis-6.3 -lvtkViewsQt-6.3 -lvtkzlib-6.3#LinkITK.pri中的具体内容:INCLUDEPATH += D:/ITK4.8/ITK-res/include/itk-4.8LIBS += -LD:/ITK4.8/ITK-res/lib/ -lITKBiasCorrection-4.8 -lITKBioCell-4.8 -lITKCommon-4.8 -lITKDICOMParser-4.8 -litkdouble-conversion-4.8 -lITKEXPAT-4.8 -lITKFEM-4.8 -litkgdcmcharls-4.8 -litkgdcmCommon-4.8 -litkgdcmDICT-4.8 -li

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论