




已阅读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|ADDA34B2BC2 9E1571276AE50A220EB91|/ VS2013 Update5 升级包: ed2k:/|file|cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso|5567336448|6 41555AD6472A98923B29CC5E371461E|/ 可能会有很多人问为啥非得用最新版啊,编译的库别的地方都用不了!好吧,萝卜白菜各 有所爱,小编我不是慈善机构,不指望别的单位沿用我的代码,我选择新版是因为新版本 编译时候不会发生各种各样的小 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.aspx FOURTH: VTK6.3 VTK 这东西呢,属于比较底层的库了,编译 openCV 和 ITK 的时候都有是否编译 VTK 链 接模块的选项,所以先装它!(如果用 PYTHON 的话,那在 VTK 之前要先装 PYTHON) VTK: /download/ 需要哪个版本就下载哪个,小编下的最新的 6.3,需要用到 VTK 源文件:VTK-6.3.0.zip VTK 数据文件: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.html openIGTLink 是医疗影像通信的常用协议:/library.html 以及下面是关于 openIGTLink 的使用教程(大师级代码,小白级操作) /Wiki/index.php/OpenIGTLink/Library/Tutorial FIFTH: ITK4.8 在这之前强烈建议先编译一下 openCV3.0 和 openIGTLink,这里就不详细说了,因为主题 只是 VTK 和 ITK 的编译,做图像处理 openCV 是必不可少的!交互的话通信也是必须的! ITK:/ITK/resources/software.html 需要哪个版本就下载哪个,小编下的最新的 4.8,需要用到 ITK 源文件:InsightToolkit-4.8.1.zip ITK 数据文件: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_SmoothingRecursiveYvvGaussianFilter Module_SubdivisionQuadEdgeMeshFilter Module_VariationalRegistration 其它维持默认即可,如果有人很喜欢用 DCMTK 的话,那需要把这 4 个勾选上: Module_IOTransformDCMTK Module_ITKDCMTK Module_Deprecated Module_ITKIODCMTK 但是小编认为没必要这么做,因为我们已经用 VTK 了, DCMTK 这部分在 VTK 里是有的! 同 VTK 找到 ITK.sln 运行,并选中 ALL_BUILD 进行编译,编译后右键 INSTALL 进行安 装和添加系统路径即可。PS:ITK 的默认编译模块里包括一部分 VTK 的接口。 最后说下为什么不选择编译例子,因为编译好的例子在 ITK 的官网上都是能找到的,所以 没必要费时编译它! 工程例子:/ITKExamples/src/Core/index.html 文档例子:/Doxygen48/html/examples.html 程序文档:/ItkSoftwareGuide.pdf SIXTH: TEST 下面给出测试用代码,我是用 Creator 建立的工程: 所在文件夹下建立 Library 文件夹,并在文件夹下建立两个 txt 文件,改名为 LinkVTK 和 LinkITK,在两个文本文件里分别添加以下信息: #LinkVTK.pri: INCLUDEPATH += D:/VTK6.3/VTK-res/include/vtk-6.3 LIBS += -LD:/VTK6.3/VTK-res/lib/ -lvtkCommonCore-6.3 -lxxxxxxxxxxxxxxxxxx 你懂的,小编我比较蠢,把所有的 lib 都链接上了,完整版后面放出,用 VS 编程的同学也 是可以直接把所有的库都包含一下自己改 INCLUDEPATH 的路径! #LinkITK.pri: INCLUDEPATH += D:/ITK4.8/ITK-res/include/itk-4.8 LIBS += -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 QObject public: explicit VTKFUNC(QObject *parent = 0); public: QString getDICOMDir(); void readDICOMImage(QString imgDir); ; #endif / VTKFUNC_H test.h -end test.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/26 ITK 部分: test.h -start #ifndef ITKFUNC_H #define ITKFUNC_H #include class ITKFUNC : public QObject public: explicit ITKFUNC(QObject *parent = 0); public: void testITK(); ; #endif / ITKFUNC_H test.h -end test.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 这样会在编译目录下生成一张 justTestITK.png 图片:) 构建教程至此结束,剩下的就是自我学习阶段了!大家加油! 深圳市南山区学苑大道 1068 号集成所认知技术中心 欢迎有志于医疗机器人的同学来我中心客座访问! 中心主任:张建伟教授 执行主任:胡颖研究员 #LinkVTK.pri 中的具体内容: INCLUDEPATH += D:/VTK6.3/VTK-res/include/vtk-6.3 LIBS += -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.8 LIBS += -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.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年灯芯绒弹力绒项目可行性研究报告
- 网络安全服务数据泄露免责协议
- 娱乐活动组织策划合同
- 信息技术在农业服务中的使用合作协议
- 产业园区招商合作协议
- 安全工器具采购合同
- 物流配送中心运营管理及合作协议
- 知识产权购买与授权使用合同
- 企业级云原生架构的扩展性优化策略
- 产品宣传册设计合同书9篇
- 浙江省台州市2025届高三第二次教学质量评估化学试题及答案(台州二模)
- 幼儿园环境卫生检查通报制度
- 2025至2030年中国单级悬臂式化工离心泵行业投资前景及策略咨询报告
- 普惠托育服务体系建设方案
- 2025年新高考历史预测模拟试卷浙江卷(含答案解析)
- 【初中地理】七年级地理下册全册期末总复习(课件)-2024-2025学年七年级地理课件(人教版2024年)
- 1.第3届中国播音主持“金声奖”优广播电视播音员主持人推表
- 2025年管道工(高级)职业技能鉴定参考试题(附答案)
- 成品油柴油汽油运输合同5篇
- 2025年无锡南洋职业技术学院单招职业技能测试题库含答案
- 2025年东北三省三校高三一模高考英语试卷试题(含答案详解)
评论
0/150
提交评论