OpenCV 4 + contrib 编译 with CMake windows

1.源码下载

OpenCV:https://github.com/opencv/opencvpython

contrib:https://github.com/opencv/opencv_contribgit

注意本体和contrib的版本匹配,详见如下:github

 

 

 默认的是“master”分支,咱们须要点击“Branch:master”按钮,点击“Tags”标签,在下拉列表中选择想要的版本。本文以4.1.0为例。算法

本体和扩展模块选择一样的分支:浏览器

     

 

 选择“Download ZIP”下载到本地架构

 

 

 

2.CMake首次设置

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)点击“完成”进行第一次编译。此次编译可能会报错,但不用去管。咱们会发现出现了不少红色背景的选项。

 

3.在CMake中进行contrib扩展模块等的详细设置

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”。此次确保不会有红色的报错。

 

4.Download failed错误处理

最多见的错误应当是“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再也不报错:

 

 

 其余库下载失败的问题能够用一样的方法解决。

 

5. 编译生成

第二次“Configure”成功后,点击“Generate”,而后用对应版本的vs打开生成的工程。

 

 

而后在vs中选择Build(生成)->Batch Build(批生成)。

在弹出的窗口中勾选ALL_BUILD和INSTALL两个项目的Debug和Release版,点击Build(生成)。

 

 

 

 

 

 

大约半小时后,编译完成:

 

 

编译结果在install文件夹中:

 

 include装着头文件,x64包含64位库。OpenCV源码编译完成。

相关文章
相关标签/搜索