前言
因为在3.0之后版本的Opencv对Sift、Sufer等新算法没有提供直接编译好的动态库来加载使用, 因此必须自己编译。
这是因为Sift、Sufer算法专利现在是属于哥伦比亚大学, 因此opencv对这部分内容及"所谓的"不稳定模块全都放到opencv_contrib中。
且只在它的Github中能够找到, opencv的官网上是没有的。因此对于想使用Sift、Sufer、双目立体匹配算法、结构光等新的算法及有专利权算法的同学需要自行编译。
当然, 这只是原因之一, 也有可能是在使用官网发布的opencv
时, 总是出现莫名错误的情况, 这时候有可能就需要编译一个opencv
环境
- Windows10
- Visual Studio 2015
- OpenCV3.4.0 OpenCV-Contrib3.4.0
- Cmake 3.14.0
Opencv
Opencv3.4版本源码 https://github.com/opencv/opencv/releases
opencv_contrib3.4版本源码 (本文.zip文件) https://github.com/opencv/opencv_contrib/releases
Cmake
https://cmake.org/download/
下载二进制版本的.zip, 解压, 把bin
目录添加到环境变量即可
CMake构建项目
源码路径"Source code"选择你刚才解压后的Opencv3.4源码, 本文解压到了D:/Nyy/image/Opencv_Sourse/opencv34
路径下, 这个需要按照你的路径自行选择。
编译输出路径"build the binaries", 本文新建文件夹"Opencv34Build"路径为D:/Nyy/image/Opencv_Sourse/Opencv34Build
, 同样这个需要按照你的路径自行选择。
单击"configure"; 选择如下图设置, 单击"Finish"即可开始编译。 记得要选好 x64还是Win32
这个过程会出现很多错误需耐心反复编译, 主要原因是他要从国外网站下载文件, 若下载失败就编译不通过, 以红色显示
若失败, 可在编译输出路径 D:\Nyy\image\Opencv_Sourse\Opencv34Build
中打开CMakeDownloadLog.txt
文件里面有下载失败文件的连接及下载文件要保存到本地的路径。之后你自己可手动打开连接自己下载并放到指定的文件夹中最常下载失败的: opencv_ffmpeg.dll
、opencv_ffmpeg_64.dll
、ffmpeg_version.cmake
及ippicv_2017u3_win_intel64_general_20170822.zip
下图(D:\Nyy\image\Opencv_Sourse\Opencv34Build 中的CMakeDownloadLog.txt
)是我本次编译时下载失败文件的连接及要保存文件的路径, 需要每个都自行下载并放到指定位置即可。
在下载完后放到指定文件夹时需把名字修改名字, 首先找到指定存储路径"D:\Nyy\image\Opencv_Sourse\opencv34\.cache\ffmpeg"
如下图。如把下载的opencv_ffmpeg.dll
名字修改为。
所有下载失败的的文件都可以这样操作, 同时需要勾选 BUILD_opencv_world
; 主要是把所有的lib文件都弄到一个opencv_world340d.lib
中方便配置, 若不勾选在最后会产生大概38个.lib文件, 导致最后配置Opencv3.4到vs2015会太麻烦, 有过Opencv2.x配置经验的都知道。
编译时勾上WITH_CUDA
选项, 为了调用GPU。
取消勾选BULID_PERF_TEST
、BULID_TEST
选择OPENCV_EXTRA_MODULES_PATH
把路径选择为解压的opencv_contrib3.4文件中的"modules"D:\Nyy\image\Opencv_Sourse\opencv_contrib34\modules
如下图:
单击"Configure"
在这部分编译中同样会出现下载失败的情况,
同样需要到D:\Nyy\image\Opencv_Sourse\Opencv34Build
中的CMakeDownloadLog.txt
中找到下载链接自行下载, 并放到指定的位置。此部分下载失败常有: boostdesc_bgm.i
、boostdesc_bgm_bi.i
、boostdesc_bgm_hd.i
、boostdesc_binboost_064.i
及face_landmark_model.dat
同样找到下载并替换。(这里可能需要多次的反复才能完成, 需要耐心!!!)
再次单击"Configure"
。直到Cmake3.14没有红色显示为止。
如下图
最后单击"Generate"
完成Cmake3.14编译的最后工作
vs2015编译
打来编译输出文件 D:\Nyy\image\Opencv_Sourse\Opencv34Build
找到 Opencv.sln
打开工程文件
因为我要编译为Debug X64
因此选择如下图。
此时即可开始编译即: 生成->生成解决方案, 随后漫长的等待。那个错误是与Python有关不用考虑
选择 CMakeTargets下的INSTALL右键选择仅用于项目->仅生成INSTALL即可, 之后会在D:\Nyy\image\Opencv_Sourse\Opencv34Build 找到一个install文件夹即为最后编译生成的Opencv3.4, 就和官网发布的一样