最近在做opencv下的人脸识别程序,要用到opencv中的FaceRecognizer类,然而这个类在需要opencv_contrib库,官方并没有将OpenCV_contrib库放置在官网上,而是将其放在了GitHub上,所以我们需要自行编译OpenCV_contrib库。
一、准备工具。
编译OpenCV_contrib库需要自行安装对应工具cmake+opencv+opencv_contrib+vs,我所安装的工具如下:
cmake下载地址:https://cmake.org/files/v3.9/cmake-3.9.2-win64-x64.msi
opencv3.3.0: https://ncu.dl.sourceforge.net/project/opencvlibrary/opencvwin/3.3.0/opencv-3.3.0-vc14.exe
opencv_contrib3.3.0: https://codeload.github.com/opencv/opencv_contrib/zip/3.3.0
vs2017: 这里可以自行选择vs版本。
还有opencv和contrib库最好用同一版本的,不然容易出错。
二、cmake编译。
cmake下载后解压运行安装,opencv3.3.0下载后运行安装完后,在opencv文件夹下新建文件夹,随便取名,比如我的是
接下来打开cmake,*/cmake/bin/cmake-gui.exe。
第一个路径选择opencv3.3.0的源代码*/opencv/sourse,第二个路径是新建文件夹*/opencv/*。点击Generate。
等待...
此处极大可能因为一些不可知原因和网络波动出现ffmpeg文件无法下载,具体指opencv_ffmpeg.dll、opencv_ffmpeg_64.dll和ffmpeg_version.cmake这三个文件下载失败。但是编译结果还是Configure down Generte down。此时我们就需要重新下载ffmpeg文件,否则后面的解决方案和安装库会报错。
只要有此类型的提示,就说明下载失败,打开错误中说明的CMakeDownloadLog.txt文件,找到你下载错误文件的地方,里面有文件的下载地址,然后复制地址自己下载,安装到.txt文件上说明要求安装到的目录,安装完,opencv源代码即可编译完毕。
这个是我opencv_ffmpeg_64.dll文件下载的地址,最好使用你自己.txt文件中标注的地址。https://raw.githubusercontent.com/opencv/opencv_3rdparty/a86e53eb35737a50e5100e26af3aa1d29e810890/ffmpeg/opencv_ffmpeg_64.dll
一般都是下载好后安装到*/opencv/new_build/3rdparty/ffmpeg中,
CMakeDownloadLog.txt文件还标注了*/opencv/sourse/.cache/ffmpeg文件夹,我的文件夹中对应文件只有几K,表明里面内容丢失了,于是我将对应的内容添入对应文件中,至此完成*/opencv/sourse的编译。
接下来编译contrib模块。在search中找到OPENCV_EXTRA_MODULES_PATH,修改路径*/opencv_contrib3.3.0/modules,点击Generte。
等待...
果不其然编译成功显示Configure down Generate down,然而还是丢失了三个文件:
另外两个错误没截图,但是我有提示:
ippicv无法下载
https://raw.githubusercontent.com/opencv/opencv_3rdparty/a62e20676a60ee0ad6581e217fe7e4bada3b95db/ippicv/ippicv_2017u2_win_intel64_20170418.zip
boostdesc_binboost_128.i下载失败
https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i
boostdesc_lbgm.i下载失败
https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i
根据错误提示中的下载路径下载文件,将内容copy到目标文件路径中,错误改完后编译完成。
注意要在对应的contrib目录下粘贴对应的文件,否则生成解决方案会失败对应的几个项目。如上图
三、vs2017编译
打开*/opencv/new_build/,点击opencv.sln文件,进入vs2017.
点击解决方案,重新生成解决方案,然后就是等待...
生成解决方案可能又会因为一些不可知因素导致有几个动态链接库生成失败,不过影响不是很大,除非失败的是你要用到的库,那就没办法只能重来了。
生成解决方案后就是安装了。找到CMakeTargets下的INSTALL,右键INSTALL
ok,你的new_build文件夹下多了一个install文件夹。这个文件夹就是我们要的,其他所有的都可以删掉了。
四、环境配置。
1、打开系统环境变量,新建*/opencv/new_build/install/x64/vc15/bin
2、配置项目属性,
包含目录:*opencv/new_build/install/include
*opencv/new_build/install/include/opencv
*opencv/new_build/install/include/opencv2
库目录: *opencv/new_build/install/include/x64/vc15/lib
附加依赖项:按照你自己生成好了的库来添加附加依赖项。
复制动态库至系统目录下:*opencv/new_build/install/include/x64/vc15/bin里面的.dll文件。
复制至 C:\Windows\System32 和 C:\Windows\SysWOW64 目录下。
至此,opencv_with_contrib3.3.0配置完成。
PS:如果有同学觉得太麻烦,也可以到我的百度网盘上获取编译成功的opencv_with_contrib库。
链接:http://pan.baidu.com/s/1o8caDei 密码:1xeu
参考文献:http://blog.csdn.net/liu798675179/article/details/51259505