【OpenCV】编译opencv_contrib模块

时间:2024-05-21 07:15:25

opencv从2.x到3.x源码结构变动非常大,很多功能不完善、性能不稳定或测试不完全的模块,都被放在了extra_modules(opencv_contrib)里面。官方给出的解释是:所有新模块都应单独开发,并首先在opencv_contrib中发布 ,当模块成熟并获得普及时,再将其移至opencv主库中,这时开发团队也将为该模块提供后续支持。

最近要用到一些特征点检测算法,3.0以后这些算法都移到了xfeacture2d模块中,下面记录一下编译过程。


1. 编译OpenCV

下载源码,按照常规思路编译即可,基本步骤:

  • cmake设置opencv源码目录、编译目录及安装目录(CMAKE_INSTALL_PREFIX);
  • “Configure”->“Generate”,选择编译器;
  • 编译源码。

【OpenCV】编译opencv_contrib模块

2. 编译opencv_contrib模块

(1)下载并解压opencv_contrib源码:
【OpenCV】编译opencv_contrib模块

(2)在opencv的cmake中设置OPENCV_EXTRA_MODULES_PATH为opencv_contrib源码路径:

【OpenCV】编译opencv_contrib模块
(3)“Configure”后选择需要编译的模块:

“Configure”后会出现opencv_contrib中模块的编译选项,选择需要编译的模块,并点击Configure和Generate。我这里编译了xfeatures2d模块,把他勾上:

【OpenCV】编译opencv_contrib模块
(4)编译

Generate完后打开工程直接编译即可。

3. 常见错误处理

编译时会出现一些错误,编译xfeatures2d模块时下面的4个文件会出错,都是头文件引用路径出现问题,最简单的解决方案是把它改成绝对路径,不嫌麻烦的话也可以把这些头文件复制到工程include目录下或把头文件路径添加到CMakeLists.txt中。
【OpenCV】编译opencv_contrib模块
【OpenCV】编译opencv_contrib模块
【OpenCV】编译opencv_contrib模块
【OpenCV】编译opencv_contrib模块
【OpenCV】编译opencv_contrib模块