OpenCV 4.3.0 版本,在4月份发布了,新加的功能说明如下:

https://github.com/opencv/opencv/wiki/ChangeLog#version430

其中,imgproc 模块的 HoughCircles() 函数,新加了检测算法 HOUGH_GRADIENT_ALT,精度得到了很大的提升

另外,国内团队 Open AI Lab 将他们的 Tengine 库集成到了DNN 模块中,提升了 DNN 运行在 ARM 平台中的速度

本文以 Win10  64 位 为例,简述 cmake 编译 OpenCV 过程 (如果是 32 位系统,则对应 32位 的 cmake 和 Qt 软件)

1  下载准备

1.1  Win10

Windows 10 专业版,64 位

注:安装 VS 2019 时,要求操作系统 Win7 SP1 以上版本

1.2  VS or Qt

选择一: Visual Studio 2019,社区版,下载链接 https://www.visualstudio.com/downloads/

选择二: VS2019 + Qt 5.12.8,对应 qt-opensource-windows-x86-5.12.8.exe,下载地址 http://download.qt.io/archive/qt/

注:虽然 Qt 是开源的,但是在下载时,需要自行注册账号,并且遵守一些开源的协议

1.3  cmake

下载 cmake-3.17.1-win64-x64.zip 压缩包,到 /bin 目录下,点击 cmake-gui 运行。

注:根据操作系统的不同,选择相应的版本,cmake 下载页  https://cmake.org/download/  或  https://github.com/Kitware/CMake/releases

1.4  OpenCV

首先,选择 “Source code”,下载 GitHub 中的 OpenCV 源码

GitHub 链接  https://github.com/opencv/opencv/releases

其次,按照类似的步骤,在 GitHub 中下载 opencv_contrib 的源码压缩包

GitHub 链接 https://github.com/opencv/opencv_contrib/releases

最后,将两个 zip 包解压缩,等待编译。

2  cmake 编译

注意: cmake 在编译过程中,会自动下载一些文件,例如 opencv_ffmpeg.dll 等,因此需要保持网络畅通。

2.1 运行

在解压后的 cmake 目录中,找到 /bin 下的 cmake-gui.exe,点击运行,如下所示

其中, source 路径指向解压后的 “opencv-4.3.0”,build 路径可指向自己建的一个 “build” 文件夹

注: 此处误将 source 路径指向了 "opencv-4.3.0/modules",导致 Configure 时出现如下错误

2.2  配置

2.2.1  opencv-maste

设置好路径后,点击左下角的 Configure 按钮,弹出窗口,如下所示

点击 Finish 按钮,继续,此时主界面的 Configure 按钮变为 Stop,表示配置进行中

注意:如遇到问题,先检查错误信息;再点击 File -> Delete Cache,退出 cmake-gui,并将 build 文件夹下的内容清空,再重复步骤 2.1 和 2.2,

等 Configure 依次结束后,如果 cmake 的主界面仍有红色区域,则再次点击 Configure 进行配置,直到红色区域完全消失。

下图是 Configure 完成后的界面,红色消失,只剩白色的区域

2.2.2  opencv_contrib-master

找到 Name 下的 OPENCV_EXTRA_MODULES_PATH,为其设置 opencv_contrib-4.3.0 的路径 ,精确到 /modules 目录

再次点击 Configure 进行配置,可能需要 Configure 两三次之后,红色区域才能完全消失。

最后,点击 Generate,出现 “Generating done” 则意味着 cmake 的工作结束了。

2.3  VS 生成

2.3.1  Python 问题

因为电脑中装了 Python 3.6.4,结果在下面步骤的 Debug 模式下,生成时出现了如下错误:

这是因为安装 python 时,并不会安装 debug 版本,于是,回到 python 安装界面,选择 debug 版本

如此,则可在 debug 模式下,顺利生成相应的库文件。

2.3.2  生成库

进入到生成的 build 目录下,用 Visual Studio 打开 OpenCV.sln

找到 INSTALL,分别在 Debug 和 Release 下,根据系统选择 x86 或 x64,鼠标右键 -> 生成

将 install 目录下生成的所有文件,拷贝到需要进行 OpenCV 配置的文件夹中 ( 32 位操作系统,则会生成 x86 文件夹)

3  VS 下的配置

1)  环境变量

计算机 -> 属性 -> 高级系统设置 -> 环境变量,编辑系统变量里的 path 变量,为其添加变量值 D:\opencv\430\x64\vc16\bin\debug

2)  头文件和库文件

头文件: D:\opencv\430\include

库文件: D:\opencv\430\x64\vc14\lib\debug

3)  依赖项

生成的 lib 库,格式为 “opencv_modulename_version_d.lib”,带 "_d" 的对应 Debug 模式,不带的对应 Release 模式。

可根据需要,添加相应的静态库。 例如,人脸识别时,用到 face 模块,可在依赖项中,添加 opencv_face4xxd.lib

4  Qt 下的配置

1)  环境变量

  与 VS 的配置一样,添加 path 变量值 D:\opencv\430\x64\vc16\bin\debug;

  另外,不要忘记添加 Qt 的 path 变量值 D:\Qt\Qt5.12.8\5.12.8\msvc2017_64\bin;

2)  头文件和库文件

  以简单的读图程序为例,需要在新建的 Qt 工程配置文件中,添加如下代码:

LIBS += -L$$PWD/../../opencv/430/x64/vc16/lib/debug -lopencv_highgui430d \
-lopencv_core430d \
-lopencv_imgproc430d \
-lopencv_imgcodecs430d INCLUDEPATH += $$PWD/../../opencv/430/include

 可根据具体的需要,适当添加新的库文件,比如,用于人脸识别的 opencv_face430d,深度神经网络 opencv_dnn430d 等等。

配置完成,尽情享受 OpenCV 的世界吧 ^_^

更新记录

2017年05月09日: 升级为 Win 64 位系统,CMake 3.8.1,OpenCV 3.2,Qt 5.8,结果在  “2.3  2)  INSTALL 生成” 处卡了,生成不成功。

2017年10月12日: 升级为 Win10 64 位系统,CMake 3.10.0,OpenCV 3.3,Qt 5.9.1,生成并配置成功。

2017年12月26日: 升级为 OpenCV 3.4,Qt 5.9.3,CMake 3.10.0,生成并配置成功。

2018年05月03日: 升级为 Opencv 3.4.1,Qt 5.9.5,CMake 3.10.3,生成并配置成功。

2018年11月21日: 升级为 Opencv 4.0.0,Qt 5.9.6,CMake 3.13.0,新加的 opencv_gapi 模块出现编译错误,生成不成功,其它模块生成并配置成功。

2019年4月11日:升级为 OpenCV 4.1.0,Qt 5.12.2,CMake 3.14.1,还是 opencv_gapi 模块出现编译错误,生成不成功,其它模块生成并配置成功。

2019年10月10日:升级为 OpenCV 4.1.1,Qt 5.12.5,CMake 3.15.4,仍有 opencv_gapi 模块出现编译错误,生成不成功,其它模块生成并配置成功。

2020年04月12日:升级为 OpenCV 4.3.0,Visual Studio 2019,Qt 5.12.8,CMake 3.17.1,生成并配置成功。

OpenCV 4.1 编译和配置的更多相关文章

  1. vs2008+cmake2.8+OpenCV2.8.4配置过程中OpenCV.sln重编译部分工程失败

    解决方法来自此链接 http://www.tuicool.com/articles/qiQBb2N vs2008+cmake2.8+OpenCV2.8.4配置过程 1.解压opencv2.4.8 2. ...

  2. QT + OpenCV + MinGW 在windows下配置开发环境

           由于研究项目需要,最近开始接触C++界面设计,关于“QT + OpenCV + MinGW在windows下配置开发环境”着实让人头疼,单次配置时间相当长,也十分不容易,本人第一次配置成 ...

  3. 【opencv】opencv在vs下的配置(持续更新)

    经常使用配置记录,会更新下去. 1.去掉ipch及.sdf文件 opencv在vs编译会得到很多文件.当中.dsf和ipch文件就有几十M.总是非常占空间,而这都是用来保存C++预编译的头文件和Int ...

  4. OpenCV 第一课(安装与配置)

    OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然 ...

  5. Dynamics AX 2012 R3 Demo 安装与配置 - 编译和配置 (Step 3)

        在前两节中,Reinhard主要讲解了如何配置安装环境,安装数据库服务器,AOS和客户端.至此安装工作已经结束,下面Reinhard开始讲解如何编译和配置.     运行客户端后,系统弹出初始 ...

  6. Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)

    尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布V ...

  7. linux内核编译环境配置

    linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...

  8. haproxy1.7编译安装配置

    #haproxy1.7编译安装配置#高可用.负载均衡 使用 #haproxy1.7编译安装配置 #centos7 x86_64 #高可用.负载均衡 使用 #下载 #http://www.haproxy ...

  9. ACE在windows下的编译及配置(VS2010)

    ACE在windows下的编译及配置(VS2010) 分类:             -[小西南]-              2013-08-06 16:17     2354人阅读     评论( ...

随机推荐

  1. 在LoadRunner中转换字符串大小写的C语言函数

    在LoadRunner中转换字符串大小写的C语言函数 . loadrunner语言ccharacterstringaction 封装ConvertToXXX函数: //ConvertToUpper f ...

  2. 转:json注入

    现在大部分web采用ajax通信,数据表现为json格式,因此可以尝试进行json注入. json注入:根据实际情况进行注入.有的时候,可能是为了方便,有人会手动拼接下JSON,但是这种随手代码,却可 ...

  3. nyoj 151 Biorhythms

    描述 Some people believe that there are three cycles in a person's life that start the day he or she i ...

  4. Ubuntu 16.04LTS 常用软件安装

    一.遇到的问题 1.su认证失败 sudo passwd //输入命令,然后修改密码即可 2.移动启动器 gsettings set com.canonical.Unity.Launcher laun ...

  5. BZOJ 2152 聪聪可可(点分治)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2152 [题目大意] 给出一棵树,问任取两点之间距离为3的倍数的概率是多少 [题解] 树 ...

  6. BZOJ 1532 [POI2005]Kos-Dicing(二分+最大流判断)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1532 [题目大意] n个人,给出m场比赛,求出胜出的人最少赢的场次. [题解] 我们发 ...

  7. [UOJ218]火车管理

    建一棵答案线段树存栈顶值,两棵可持久化线段树分别存栈顶值和栈顶元素入栈时间 询问就直接在答案线段树上查,弹栈就用入栈时间在对应版本的可持久化线段树上查询即可,修改就是可持久化线段树的区间覆盖 以前一直 ...

  8. 浅谈分布式CAP定理

    互联网发展到现在,由于数据量大.操作并发高等问题,大部分网站项目都采用分布式的架构.而分布式系统最大的特点数据分散,在不同网络节点在某些时刻(数据未同步完,数据丢失),数据会不一致. 在2000年,E ...

  9. [转]SSH整合 简单的增删改查

      Database 使用 Mysql , 建立User 表 CREATE TABLE `user` ( `id` int(11) NOT NULL, `firstName` varchar(20)  ...

  10. [转]Syntax error on token "Invalid Character", delete this token 的解决

    原文  http://blog.csdn.net/actsai/article/details/24256987 主题 Eclipse Unicode Java eclipse 中遇到了Syntax ...