【OpenCV】编译opencv_contrib模块
opencv从2.x到3.x源码结构变动非常大,很多功能不完善、性能不稳定或测试不完全的模块,都被放在了extra_modules(opencv_contrib)里面。官方给出的解释是:所有新模块都应单独开发,并首先在opencv_contrib中发布 ,当模块成熟并获得普及时,再将其移至opencv主库中,这时开发团队也将为该模块提供后续支持。
最近要用到一些特征点检测算法,3.0以后这些算法都移到了xfeacture2d模块中,下面记录一下编译过程。
1. 编译OpenCV
下载源码,按照常规思路编译即可,基本步骤:
- cmake设置opencv源码目录、编译目录及安装目录(CMAKE_INSTALL_PREFIX);
- “Configure”->“Generate”,选择编译器;
- 编译源码。
2. 编译opencv_contrib模块
(1)下载并解压opencv_contrib源码:
(2)在opencv的cmake中设置OPENCV_EXTRA_MODULES_PATH为opencv_contrib源码路径:
(3)“Configure”后选择需要编译的模块:
“Configure”后会出现opencv_contrib中模块的编译选项,选择需要编译的模块,并点击Configure和Generate。我这里编译了xfeatures2d模块,把他勾上:
(4)编译
Generate完后打开工程直接编译即可。
3. 常见错误处理
3.1 找不到文件
报错:无法打开包括文件:“vgg_generated_120.i”:No such file or directory。
可以直接下载这些文件放到对应目录(xx/opencv_contrib-3.x.x/modules/xfeatures2d/src)即可,这里给出地址:
- boostdesc_lbgm.i
- boostdesc_bgm.i
- boostdesc_bgm_bi.i
- boostdesc_bgm_hd.i
- boostdesc_binboost_064.i
- boostdesc_binboost_128.i
- boostdesc_binboost_256.i
- vgg_generated_48.i
- vgg_generated_64.i
- vgg_generated_80.i
- vgg_generated_120.i
3.2 无法引用头文件
编译时会出现一些错误,编译xfeatures2d模块时下面的4个文件会出错,都是头文件引用路径出现问题,最简单的解决方案是把它改成绝对路径,不嫌麻烦的话也可以把这些头文件复制到工程include目录下或把头文件路径添加到CMakeLists.txt中。
还没有评论,来说两句吧...