为何需要自行编译opencv451与opencv_contrib451?
因为在3.0之后版本的Opencv对Sift、Sufer等新算法没有提供直接编译好的动态库来加载使用,因此必须自己编译。这是因为Sift、Sufer算法专利现在是属于哥伦比亚大学,因此opencv对这部分内容及“所谓的”不稳定模块全都放到opencv_contrib中。且只在它的Github中能够找到,opencv的官网上是没有的。因此对于想使用Sift、Sufer、双目立体匹配算法、结构光等新的算法及有专利权算法的同学需要自行编译。
一、下载opencv451与opencv_contrib451相对应的版本
1. 下载需要的opencv3.4版本源码 https://github.com/opencv/opencv/releases
2. 下载需要的opencv_contrib451版本源码(和opencv的子版本号一定要对应) https://github.com/opencv/opencv_contrib/releases
二、Cmake3.14 编译 OpenCV
1. 安装 Cmake3.20.0
安装包下载地址:https://cmake.org/download/
2. 编译 Opencv451
源码路径“Source code”选择你刚才释放后的的Opencv451目录下的sources文件夹,本文解压到了G:\envirment\opencv-4.5.1路径下,这个需要按照你的路径自行选择。
编译输出路径“build the binaries”,本文新建文件夹“BUILD”路径为G:\envirment\opencv-4.5.1\BUILD,同样这个需要按照你的路径自行选择。
注意 source code 里面指向的不是opencv的解压目录而是里面的source目录。
如图所示, source 文件夹下面有一个CMakeList.txt文件,如果路径错误,就会报CMake Error: The source directory "/opencv" does not appear to contain CMakeLists.txt.错误。
编译可能会卡死在 ippitv和ffmpeg的downlaod 中
此时需要 下载资料
ffmpeg
下载地址:https://github.com/opencv/opencv
git地址:https://github.com/opencv/opencv.git
分支:ffmpeg/master_20161202
ippicv
下载地址:https://github.com/opencv/opencv
git地址:https://github.com/opencv/opencv_3rdparty.git
分支:ippicv/master_02151201
ffmpeg
将ffmpeg目录下的ffmpeg_version.cmake、opencv_ffmpeg.dll、opencv_ffmpeg_64.dll三个文件复制到【你的OpenCV路径】\opencv\sources\3rdparty\ffmpeg
根据ffmpeg.cmake里的mad5 在dll前按如图加上前缀,将内容修改为:
ippicv
目录“\opencv_3rdparty-ippicv-master_20191018\ippicv\ippicv_2020_win_intel64_20191018_general.zip” 解压到\opencv-4.5.1\3rdparty\ippicv
中然后下盖ippicv.cmake
如图注释内容
3 opencv_contral451 配置
如图填写 opencv_contral 和 free 勾上
在搜索栏中输入 OPENCV_ENABLE_NONFREE
,在value值中点击选中。如果没有选中,那么类似SIFT这种已经被申请专利的方法就无法使用。
然后点击 configure
4 vs 编译
批生成 选择如图。
5 修改环境变量
生成结束之后,需要修改环境变量。
环境变量在“此电脑”->“属性”->“高级系统设置”->“环境变量”,在用户变量里面的 Path 变量后面添加之前CMake设置的build目录\install\x64\vc16\bin
,确定,退出。
百度网盘资源:文中提到的文件
https://pan.baidu.com/s/1_wN6cvnYwoam-FGeMEReCg
提取码:ggs6