Visual Studio 2013编译OpenCV3.0+ITK-SNAP

来源:互联网 发布:北京网络推广培训 编辑:程序博客网 时间:2024/06/07 20:00

1.CMake编译OpenCV源码

从Github下载源码OpenCV。
打开CMake编译,需要VTK的支持,由于VTK7.0取消了OpenGL,改为OpenGL2,因此如果出现缺少vtkRenderingOpenGL错误,需要在OpenCV的CMake文件进行相应修改, 打开D:\opencv-3.0.0\cmake\OpenCVDetectVTK.cmake,在第6行将vtkRenderingOpenGL改为vtkRenderingOpenGL2,随后即可成功Configure/Generate,Github的最新版本修正了这一错误。
注意:在BUILD中取消不需要的组件,比如opencv_viz和python,勾选BUILD_opencv_world。

2.生成OpenCV

用VS2013打开OpenCV.sln,先后生成ALL_BUILD和INSTALL。
注意:生成过程中可能会发生卡顿等现象,稍等即可。
OpenCV的所有头文件和lib库安装到了D:\OpenCV3.0\install目录下,使用时需配置附加包含目录:
D:\OpenCV3.0\install\include\opencv2D:\OpenCV3.0\install\include\opencvD:\OpenCV3.0\install\include
附加库目录:
D:\OpenCV3.0\install\x64\vc12\lib
附加依赖项:
opencv_world320d.lib
系统环境变量Path路径添加:
D:\OpenCV3.0\install\x64\vc12\bin

3.CMake编译ITK-SNAP

Github上最新版的ITK-SNAP缺少Submodules里面的内容,因此需要用Github命令行工具,进入ITK-SNAP源码目录,使用如下命令更新:
git submodule initgit submodule update
此外还需要OpenCV,ITK以及ITKOpenCVBridge的支持,因此需要先对ITK进行编译,加入OPENCV_DIR,并且选中模块Module_ITKVideoBridgeOpenCV,编译后在ITK中生成相应模块。
为了避免出现VTK和QT相关错误,最好根据Building ITK-SNAP选择第三方库的版本,即VTK6.3.0,QT5以上,不要选择SNAP_WITH_QT4。
因此对ITK中的ITKVtkGlue模块而言,如果之前不是用VTK6.3.0的话,需要在CMake中修改VTK_DIR为VTK6.3.0-build目录重新编译生成,然后再编译ITK-SNAP,这样在ITK-SNAP中,自动会配置好跟VTK6.3.0相关的属性。
CMake编译ITK-SNAP,需要选择ITK_DIR,OPENCV_DIR,QT的qmake.exe路径进行编译。

4.生成ITK-SNAP

打开SNAP.sln生成工程,D:\ITK-SNAP\SNAPCommon.cxx总是存在缺少引号的错误,需要补全右半部分:
// Build date - shown to help debugging nightly buildsconst char SNAPBuildDate[] = "2017/03/20?";
至此生成成功,运行即可。

5.错误分析

1.D:\itk-snap-src\GUI\Qt\Components\SNAPQtCommon.cxx(560): error C2146: 语法错误: 缺少“)”(在标识符“Ctrl”的前面)
经过在网上搜索SNAPQtCommon.cxx文件可知,其中前半部分均是乱码,而工程中打开的有些用QChar()转换了,出错地方没有,暂时先注释掉,忽略该错误,待以后有问题再详细解决。
2.找不到vtk相关的.dll文件
在Path中加入.dll所在目录,比如:D:\VTK-6.3.0-build\bin\Debug
3.itksnapui_model.lib和itksnapui_qt.lib无法LINK到vtk相关的
找到相关项目,配置附加库目录为vtk6.3.0的lib目录,附加依赖项itksnapui_model加入
vtkCommonCore-6.3.lib;vtkRenderingCore-6.3.lib;
itksnapui_qt只需加入
vtkCommonCore-6.3.lib
下面是vtk6.3.0的所有lib库,并不都需要,仅在此罗列,以防不时之需。
kernel32.libuser32.libgdi32.libwinspool.libshell32.libole32.liboleaut32.libuuid.libcomdlg32.libadvapi32.libcomctl32.libvfw32.libws2_32.libwsock32.libopengl32.libvtkalglib-6.3.libvtkChartsCore-6.3.libvtkCommonColor-6.3.libvtkCommonComputationalGeometry-6.3.libvtkCommonCore-6.3.libvtkCommonDataModel-6.3.libvtkCommonExecutionModel-6.3.libvtkCommonMath-6.3.libvtkCommonMisc-6.3.libvtkCommonSystem-6.3.libvtkCommonTransforms-6.3.libvtkDICOMParser-6.3.libvtkDomainsChemistry-6.3.libvtkexoIIc-6.3.libvtkexpat-6.3.libvtkFiltersAMR-6.3.libvtkFiltersCore-6.3.libvtkFiltersExtraction-6.3.libvtkFiltersFlowPaths-6.3.libvtkFiltersGeneral-6.3.libvtkFiltersGeneric-6.3.libvtkFiltersGeometry-6.3.libvtkFiltersHybrid-6.3.libvtkFiltersHyperTree-6.3.libvtkFiltersImaging-6.3.libvtkFiltersModeling-6.3.libvtkFiltersParallel-6.3.libvtkFiltersParallelImaging-6.3.libvtkFiltersProgrammable-6.3.libvtkFiltersSelection-6.3.libvtkFiltersSMP-6.3.libvtkFiltersSources-6.3.libvtkFiltersStatistics-6.3.libvtkFiltersTexture-6.3.libvtkFiltersVerdict-6.3.libvtkfreetype-6.3.libvtkGeovisCore-6.3.libvtkgl2ps-6.3.libvtkGUISupportQt-6.3.libvtkGUISupportQtOpenGL-6.3.libvtkGUISupportQtSQL-6.3.libvtkhdf5_hl-6.3.libvtkhdf5-6.3.libvtkImagingColor-6.3.libvtkImagingCore-6.3.libvtkImagingFourier-6.3.libvtkImagingGeneral-6.3.libvtkImagingHybrid-6.3.libvtkImagingMath-6.3.libvtkImagingMorphological-6.3.libvtkImagingSources-6.3.libvtkImagingStatistics-6.3.libvtkImagingStencil-6.3.libvtkInfovisCore-6.3.libvtkInfovisLayout-6.3.libvtkInteractionImage-6.3.libvtkInteractionStyle-6.3.libvtkInteractionWidgets-6.3.libvtkIOAMR-6.3.libvtkIOCore-6.3.libvtkIOEnSight-6.3.libvtkIOExodus-6.3.libvtkIOExport-6.3.libvtkIOGeometry-6.3.libvtkIOImage-6.3.libvtkIOImport-6.3.libvtkIOInfovis-6.3.libvtkIOLegacy-6.3.libvtkIOLSDyna-6.3.libvtkIOMINC-6.3.libvtkIOMovie-6.3.libvtkIONetCDF-6.3.libvtkIOParallel-6.3.libvtkIOParallelXML-6.3.libvtkIOPLY-6.3.libvtkIOSQL-6.3.libvtkIOVideo-6.3.libvtkIOXML-6.3.libvtkIOXMLParser-6.3.libvtkjpeg-6.3.libvtkjsoncpp-6.3.libvtklibxml2-6.3.libvtkmetaio-6.3.libvtkNetCDF_cxx-6.3.libvtkNetCDF-6.3.libvtkoggtheora-6.3.libvtkParallelCore-6.3.libvtkpng-6.3.libvtkproj4-6.3.libvtkRenderingAnnotation-6.3.libvtkRenderingContext2D-6.3.libvtkRenderingContextOpenGL-6.3.libvtkRenderingCore-6.3.libvtkRenderingFreeType-6.3.libvtkRenderingGL2PS-6.3.libvtkRenderingImage-6.3.libvtkRenderingLabel-6.3.libvtkRenderingLIC-6.3.libvtkRenderingLOD-6.3.libvtkRenderingOpenGL-6.3.libvtkRenderingQt-6.3.libvtkRenderingVolume-6.3.libvtkRenderingVolumeOpenGL-6.3.libvtksqlite-6.3.libvtksys-6.3.libvtktiff-6.3.libvtkverdict-6.3.libvtkViewsContext2D-6.3.libvtkViewsCore-6.3.libvtkViewsInfovis-6.3.libvtkViewsQt-6.3.libvtkzlib-6.3.lib

6.参考文献

win10X64 + vs2015通过Cmake编译Opencv
ITK-SNAP Medical Image Segmentation Tool




0 0