2016年3月27日星期日

Compile opencv 3.1 with opencv_contrib added and WITH_VTK enabled

先把vtk代码下下来,因为opencv里的三维显示模块viz需要有vtk支持。然后打开cmake进行编译,在默认配置的基础上,我只做了以下更改:
1、check BUILD_EXAMPLES;
2、check BUILD_TESTING;
3、将CMAKE_INSTALL_PREFIX从C盘路径改为F盘下的某个文件夹,这样做的目的是因为CMAKE_INSTALL_PREFIX设置了最后.sln中INSTALL工程要将生成的.lib和.dll文件提取到哪里,而如果设置到C盘的话,则很有可能由于没有访问权限,导致INSTALL失败。不过,其实这里的vtk编译过程最后也不用INSTALL,因为opencv编译的时候需要的是包含VTKConfig.cmake文件的文件夹,并非INSTALL填充的文件夹。
另外一个我后悔没做的更改就是没有uncheck掉BUILD_SHARED_LIBS,导致后续我运行自己的.exe文件时总是需要把vtk的大概40个.dll文件全拷到所在文件夹中,很费事。要是我事先把vtk做成静态库,后续它的函数应该就封装到opencv的某个module的.dll中去了,不用再拷vtk的.dll文件。

编译好vtk之后,再到github上把opencv_contrib代码下下来,之后打开opencv的cmake工程,把OPENCV_EXTRA_MODULES_PATH设置到.../opencv_contrib-master/modules文件夹,把VTK_DIR设置到上述vtk build的文件夹。接着check上BUILD_opencv_viz,另外要注意的是最好是uncheck掉BUILD_opencv_world和BUILD_opencv_contrib_world,因为我发现要是生成这两个库,在VS build的时候经常会报一堆错误,要是不生成这两个库还是使用单个库的话build就不会报错。

配置好之后点击configure顺利通过,但是点击generate的时候报了如下的cmake错误:

CMake Error at /usr/lib/cmake/vtk-7.0/vtkModuleAPI.cmake:120 (message):
Requested modules not available:
 vtkRenderingOpenGL 

Call Stack (most recent call first):
/usr/lib64/cmake/vtk-7.0/VTKConfig.cmake:88 (vtk_module_config) cmake/OpenCVDetectVTK.cmake:6 (find_package) 
CMakeLists.txt:597 (include)

搜索了半天,才在这里找到了解决方案,于是对照着在OpenCVDetectVTK.cmake中做了相应更改之后generate就通过了,之后打开VS去生成各个库即可了。

跑了一下viz三维模块,感觉还是相当不错的。


没有评论:

发表评论