opencv_contrib4.4安装

opencv_contrib4.4安装

一、前言

       安装好配置好OpenCV后,本以为可以好好的开始学习一下OpenCV了,没想到还有个opencv_contrib扩展模块,什么?原来安装的OpenCV只包含基础的模块,然而还有许多实用功能被放在了opencv_contib扩展模块中,比如常用的人脸识别,生物视觉,特征点提取等众多强大的功能,由于算法专利的保护,商用是要收钱的,这些功能被放在了扩展模块opencv_contrib中,为了学习这些功能,硬着头皮,再来安装配置一下OpenCV的环境吧,确实比安装基础模块复杂多了,因为需要编译代码。

二、下载与安装

假设你已经下载了OpenCV,并已经安装配置好了环境。

假设你已经安装了CMake工具,我的版本是3.15.5

1.下载

下载4.4.0版本的 opencv_contrib,要和我电脑上安装的OpenCV4.4.0的版本一致。下载速度贼慢,可以考虑在国内网站下载,比如gitee,就是更新没有github快,目前好像最新版本是4.2.0,只能忍受github的龟速下载了。如下图所示:

 

选择4.4.0,单击进入下图所示页面:

 

单击“Source code(zip)”,开始下载,文件大小59.19M。等待中。。。

解压压缩包opencv_contrib-4.4.0.zip,把它解压到自己指定的位置,我是把它和OpenCV放到了一起,如下图所示:

 

2.CMake配置编译

打开CMake工具,如下图所示:

 

步骤1:选择OpenCV源码路径,一般都是opencv/sources路径下;

步骤2:选择保存CMake编译配置好的代码的路径,自己新建一个目录即可;

步骤3:点击Configure开始进行配置。弹出下图所示的对话框:

 

步骤1:选择适合你的VS的版本,我这里是VS2017版本的;

步骤2:平台选择x64的。选好以后点击Finish按钮。弹出下图对话框:

 

 

CMake开始配置生成VS2017版的代码工程。

 

Configure结束后出现了红色界面,不要害怕,再点一次Configure按钮。再进行一次Configure,红色界面消失了,如下图:

 

至此,opencv 的源码的Configure胜利结束。至革命胜利只是一个小段落,接下来要进行 opencv_contrib源码的添加了,

下面开始添加,如下图所示:

 

步骤1:勾选上Grouped和Advanced两个复选框。

步骤2:为了生成的opencv的lib和dll包含在一个文件opencv_world.lib和opencv_world.dll内,我们要找到 BUILD点开并勾选上 BUILD_opencv_world。如上图所示。

 

步骤3:在OPENCV下勾选上 OPENCV_ENABLE_NONFREE项。

据说如果不勾选会在在运行SIFT、SURF等函数时会出现问题,出现以下报错:

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) ;

步骤4:在OPENCV 下 OPENCV_EXTRA_MODULES_PATH 项,添加opencv_contrib的路径,他的路径是我们解压的opencv_contrib 文件夹下的 module 文件夹的路径,我的是D:\opencv\opencv_contrib\modules,如上图所示。

接下来,再次点击 Configure按钮,弹出现下图所示对话框:

 

又出现了红色的部分,有缘分啊,先别管他。再次点击Configure按钮,运气好,红色消失。一般都是这么解决,如果红色不消失,估计有点麻烦,

点击Generate按钮,开始执行。

结果如下图所示:

 

胜利,又前进了一步,

3.使用VS2017编译生成OpenCV库文件

趁着一股气我们进行下一步,找到编译好的文件夹,我这里是D:\opencv\build,我这个文件夹本来就有,有点乱,用VS2017打开文件夹下找的OpenCV.sln解决如下图所示:

 

编译之前要确认Debug的配置一定是X64的。 右键单击解决方案’OpenCV’,在弹出的菜单中选择“生成解决方案”。如下图所示,开始编译,时间有点长,估计10来分钟,慢慢等待,喝杯茶。

代码工程编译过程中,如下图所示:

 

4.编译过程中出现错误的解决办法

1.安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案(附带百度云资源)

2.No such file or directory的错误

1)错误如图所示: 

修改方法:

将opencv\sources\modules\features2d\test文件夹下的 test_descriptors_regression.impl.hpp

test_detectors_regression.impl.hpp

test/test_detectors_invariance.impl.hpp

test_descriptors_invariance.impl.hpp

test_invariance_utils.hpp

拷贝到opencv_contrib/modules/xfeatures2d/test/路径下,如下图所示:

 

2) 

修改方法:

将opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp文件中的代码: #include features2d/test/test_detectors_regression.impl.hpp #include features2d/test/test_descriptors_regression.impl.hpp

改为: #include "test_detectors_regression.impl.hpp" #include "test_descriptors_regression.impl.hpp"

3将opencv_contrib/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp文件中的代码:

#include "features2d/test/test_detectors_invariance.impl.hpp"

#include "features2d/test/test_descriptors_invariance.impl.hpp"

 

改为:

#include "test_detectors_invariance.impl.hpp"

#include "test_descriptors_invariance.impl.hpp"

 

接下来,右键单击项目"INSTALL"->“仅用于项目”->“仅生成INSTALL”。开始生成。

生成成功,如下图所示:

包含扩展库的opencv 的库就已经生成到 build 文件夹下的 install 文件夹中了,结构和OpenCV的是一样的,

我们配置OpenCV环境的时候,需要把路径修改到install文件夹下的路径。如下图所示:

 

 

5.注意事项

注意:把环境变量换成最新编译出OPenCV的路径D:\opencv\build\install\x64\vc15\bin

 

6.关于CMakeDownloadLog.txt中下载失败的文件的问题的解决:

1).从CMakeDownloadLog.txt中找到下载失败的文件下载的地址,复制到迅雷中去下载,是以"https://raw."开头的,有的下载很快,有的下载很慢,迅雷如果一直下载失败,可以百度网盘试试。

2).把下载的文件放到对应的文件夹内,一般都是在.cache文件夹内,此时需要对文件进行改名,以opencv_videoio_ffmpeg_64.dll为例,文件名字是需要加上文件的MD5值在文件名前面的。MD5值存放在ffmpeg的cmake文件中:

opencv\sources\3rdparty\ffmpeg\目录中的CMake文件中的Md5值要和opencv\sources.cache\ffmpeg目录中的文件名中的MD5要保持一致,并且要和文件的MD5值保持一致。编译才会通过。如下图所示:

 

当CMakeDownloadLog.txt中出现如下图所示的内容时,说明编译成功:

 

三、简单测试

写一段简单的代码,调一下openc_contrib中的模块,以SIFT为例,代码如下:

include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
​
​
int main()
{
    //提取特征点方法
    //SIFT
    cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();
    cv::waitKey(0);
    return 0;
}
//  //特征点

出现SIFT不被识别的错误。如下图:

原来是OpenCV 4.4.0 SIFT 迁移至主库了(因为SIFT专利过期),以后可以免费使用了,为了测试OpenCV_contrib是否成功,我们换成SURF来测试一下:

/ opencv_contrib_test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
​
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
​
​
int main()
{
    //SURF
    cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();
    cv::waitKey(0);
    return 0;
}

编译成功,说明opencv_contrib安装成功了。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值