编译opencv-contrib模块

概述:

在opencv3版本中,将特征点提取的相关算法从opencv2的feature2d中搬移到了opencv-contrib模块中的xfeature2d模块中.如果需要使用这部分功能,需要编译opencv源码和opencv-contrib模块.

 

添加opencv_contrib模块的具体步骤:

1.安装cmake工具 www.cmake.rog

2.在github下载opencv-contrib模块源码.https://github.com/opencv/opencv_contrib/releases

这部分需要注意,下载和opencv源码相同版本的opencv-contrib模块.

具体操作如下:

  • 进入opencv_contrib仓库

 

  • 点击releases,查找已经发行的历史版本. 

  • 由于我自己使用的opencv3.4.6,因此选择3.4.6版本的contrib模块.

         

3.将opencv-contrib模块解压.

 

4.新建build文件夹,用于存放cmake的编译输出二进制文件.

 

5.找到cmake安装目录,运行cmake-gui.exe,进行cmake工程的配置和生成.

操作如下:

  • 选择opencv源码目录与生成二进制文件的存放目录

  • 第一次configure.点击configure会要求选择vs的版本,系统自动识别,点击确认即可.
  • 第二次configure.这一步需要注意两点:
  1. 选中opencv-contrib模块作为外部模块.精确到该目录下的moudle目录.
  2. 选中OPENCV_ENABLE_NONEFREE标号,因为有些模块已经申请了专利.存在版权问题.

  • 电机generate生成工程文件,生成之后,找到build目录,通过vs2017打开opencv.sln解决方案.

6.在vs2017中,直接F5编译opencv.

7.在编译成功后,右键点击INSTALL,再点击生成.这一步操作将在build目录下生成install文件夹.

install文件夹中便是我们熟悉的用于opencv配置的文件内容.

 

8.按照opencv配置步骤,配置新编译的opencv.

9.配置之后,在代码中使用xfreature2d的相关功能时,需要包含头文件和引用命名空间.

 

10.逐一完成以上步骤,便能够使用surf等算法.这里放上surf算法运行结果.

 

 

注意:

1.在cmake阶段,如果使用sift等算法,需要勾选OPENCV_ENABLE_NONEFREE.否则将报错,如下:

OpenCV(3.4.6) Error: The function/feature is not implemented (This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library) in cv::xfeatures2d::SURF::create, file D:\Myopencv\opencvContrib\opencv_contrib-3.4.6\modules\xfeatures2d\src\surf.cpp, line 1029

其中,错误提示告诉我们在cmake编译选项中,需要勾选OPENCV_ENABLE_NONFREE选项,并重新编译库文件.

 

2.最好保证opencv源码和opencv-contrib模块的版本一致.

 

 

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值