OpenCV:https://github.com/opencv/opencvpython
contrib:https://github.com/opencv/opencv_contribgit
注意本体和contrib的版本匹配,详见如下:github
默认的是“master”分支,咱们须要点击“Branch:master”按钮,点击“Tags”标签,在下拉列表中选择想要的版本。本文以4.1.0为例。算法
本体和扩展模块选择一样的分支:浏览器
选择“Download ZIP”下载到本地架构
CMake下载地址:https://cmake.org/download/ui
1)打开CMake,设置好OpenCV本体源码所在路径,以及存放生成的工程的目标路径url
正确的源码路径以下图,包含一个CMakeList.txt文件,根据本身存放的位置进行设置。spa
注意:3d
路径中不能有中文
确保目标路径的硬盘剩余空间在18G以上
2)点击“Configure”
3)选择编译器:
当前版本不支持用vs 2019编译,选择2017。
4)在第二栏选择编译器架构,这里选择64位(x64)。要根据本身硬件架构进行选择:32位兼容性好(win32),64位速度快,arm架构的硬件要选择arm。
(注:老版本的CMake在上一步就会选择编译器架构)
5)点击“完成”进行第一次编译。此次编译可能会报错,但不用去管。咱们会发现出现了不少红色背景的选项。
1)找到“OPENCV_EXTRA_MODULES_PATH”。(可在“Search”栏中直接搜索)
点击右侧的省略号选择下载的contrib源码中,“modules”文件夹的路径(注意不是contrib的主目录)。
该路径是下面这样的:
2)可选项:
a.若是须要使用surf特征检测之类的有专利的算法,须要勾选"OPENCV_ENABLE_NONFREE”:
b.可勾选“BUILD_opencvv_world”,这样最后的库是一个文件,引用更简便。
c.根据自身python版本和须要选择性勾选“BUILD_opencv_python2”,“BUILD_opencv_python3”
3)再次点击“Configure”。此次确保不会有红色的报错。
最多见的错误应当是“Download failed”。这要归功于the wall。因而须要用必定手段手动下载。咱们能够用如下方法获取到下载地址。
以ffmpeg下载失败为例:
报错信息形以下图,咱们看到“Download failed”字样,确认是下载失败。
在报错信息上方咱们能够找到下载失败的文件名opencv_ffmpeg.dll。
在下方Call Stack中能够找到ffmpeg库的.cmake文件路径:
用notepad或记事本打开ffmpeg.cmake,找到以下字段:
咱们能够看到下载的URL: https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/
其中 ${FFMPEG_BINARIES_COMMIT} 字段的内容能够在前面的代码中找到:
因而咱们获得了下载的base url: https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/
咱们再看这段代码,它在一个foreach循环中:
经过以前的代码咱们能够看到ids的元素,是BIN32,BIN64,CMAKE,而且紧接着定义了name_BIN32, name_BIN64, name_CMAKE
再看循环体中的代码
咱们能够明白它是分别下载了这三个文件:
因而咱们将他们分别和以前获得的base url拼接成了三个下载地址:
分别粘贴到浏览器中下载到自定文件夹。(其中的cmake文件可能不会自动下载,须要在页面中右键点“另存为”)
回到刚才那个cmake文件,咱们将网址那行代码注释掉,替换成刚刚存放下载文件的目录:
保存后,再次点击“Configure”。能够看到ffmpeg再也不报错:
其余库下载失败的问题能够用一样的方法解决。
第二次“Configure”成功后,点击“Generate”,而后用对应版本的vs打开生成的工程。
而后在vs中选择Build(生成)->Batch Build(批生成)。
在弹出的窗口中勾选ALL_BUILD和INSTALL两个项目的Debug和Release版,点击Build(生成)。
大约半小时后,编译完成:
编译结果在install文件夹中:
include装着头文件,x64包含64位库。OpenCV源码编译完成。