This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library
一种解决方式:
在这里插入图片描述

1 OpenCV之contrib模块编译

两者都使用了cmake-gui这个cmake工程管理软件,大致流程差不多,下面分析下几个不同之处。在之前我还是先把资源链接弄出来:
你需要opencv_contrib-xxx + cmake,扩展模块的版本号要和之前装的opencv的版本号的一致。
opencv_contrib-xxx(选择zip就好,解压即可;.tar.gz是Linux用的):
https://github.com/opencv/opencv_contrib/releases
cmake(.msi安装包,zip解压即可使用):
https://cmake.org/download/
Linux直接用命令即可,cmake-curses-gui是黑白的那种,还是cmake-gui好用些。

apt-get install cmake cmake-curses-gui cmake-gui

1.1 contrib在linux上编译

你可以参考我的博客,其中有关于opencv2.4的编译详细流程,contrib模块仅需要简单的修改下,下面提及:
https://blog.csdn.net/weixin_39956356/article/details/91348030#2_opencv24_27
注意问题:
(1):linux下编译出来的默认是64位的,除非你装了32位的编译器,其实linux逐渐在弱化对32位程序的支持。而window还大量存在32位应用程序。

1.2 contrib在windows上编译

同样你可以参考上面的文章,因为都是用的cmake-gui,下面先指出几个易错的地方。
(1):正如上面提及的,window存在大量32位应用程序。所以务必清楚你的应用场景,是32位?64位?搞错就得多花一个小时。。运行的时候64位选择X64,32位选择行X86,下面是一个64位例子:
在这里插入图片描述
那么,如何让cmake知道你即将编译是32位?还是64?
答:不同版本的cmake做法有些许不同, 在最新的cmake(3.16)中默认是64位,注意下图的第二栏,32位对应x86,64位对应x64,而且不同的vs版本默认的不一样,比如VS2019默认x64,VS2017默认x86。

在这里插入图片描述
cmake之前的版本,像下面的这种,后面带了""Win64"就是64位,不带就是32位。注意你实际遇到的情况?
在这里插入图片描述
(2):勾选OPENCV_ENABLE_NONFREE ,否则xfeature2d的算法用不了,它们已经申请了专利。
当然专利算法,商业收费我就不知道了;还有一个方法,你就不要用新的版本,用3.2版本之前的。
在这里插入图片描述
(3):设置正确的contrib路径,务必到modules
(4):还有一个很讨厌的下载问题,很慢很慢,慢到无语。你在编译的时候会出下几个需要下载的地方,这是你可以自己把它先下下来。

  1. (sources.cache):sources文件夹有个.cache文件夹,下载的文件默认放在这里的。sources是opencv的源码。
  2. 当cmake下载需要的文件时,会在build文件夹下生成CMakeDownloadLog.txt,里面有下载的原始链接及检验码,编译我们默认会新建build文件夹。
  3. CMakeDownloadLog.txt之后,有校验码–就是一串很长的字母数字,还有下载链接及文件名。下面是一个例子,建议使用IDM下载,大约200k左右。下载结束后,合成需要的文件名,前面加前缀“校验码”!!!,放在sources\.cache\ippicv下,之后重新cmake构建,如此反复直到生成工程。建议仔细看看CMakeDownloadLog.txt文件。
  4. 最后我会把我的打包上传,应当注意32位。64位下载文件不一样,不同版本也不一样,我的是OpenCV-3.4.6,里面还包含contrib需要下载文件,通用的。
    在这里插入图片描述
    合成需要的文件名:
    在这里插入图片描述
    contrib需要下载文件,通用:
    在这里插入图片描述
    下图由于长时间无法下载,导致cmake出错,显示解决的方法:
    在这里插入图片描述
    (5):BUILD_opencv_world:代表把所有.dll打包成一个。
    如果你还要支持python,需要提起安装python哦,编译结果生成python文件夹下面的cv2有你需要的.pyd。
    默认会编译OpenCL,并行加速,当然还有kml(intel的并行库收费),OpenBlas,CUDA之类的。其他的不细说了,你用的时候自然明白,默认即可。
    在这里插入图片描述
    (6):“Configure“后就可以选择三方库的路径了,还需要”Generate”,成功后会生成OpenCV.sln
    在这里插入图片描述
    在这里插入图片描述
    (6):找到解决方案资源管理器,找不到就上面索搜即可,如果你之前编译过,只需要重新生成即可。
    在这里插入图片描述
    (7):配置我们的工程了
    https://blog.csdn.net/weixin_39956356/article/details/102985985

2 文件下载

链接:https://pan.baidu.com/s/1HcWv-tldwB59PQVnpWPtjA
提取码:tazp

Logo

更多推荐