OpenCV 之 编译和配置
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 之 编译和配置的更多相关文章
- opencv手工编译
opencv手工编译方法1.下载cmake gui2.在where is the source code路径下配置opencv根目录,在where to build the binaries路径下配置 ...
- OpenCV+VS开发环境配置
最近跑C程序,头文件中用到了OpenCV中的文件,找了很多篇OpenCV+VS的环境配置,发现如下这篇写的最为详细,特转载来自己的博客中留存,并附上原博客地址如下 OpenCV学习笔记(一)——Ope ...
- OpenCV的安装与配置
1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工.下载链接http://opencv.org/releases.html,选择sources版本 2.解 ...
- OpenCV On Android环境配置最新&最全指南(Eclipse篇)
简介 本教程是经过本人多次踩坑,并参考网上众多OpenCV On Android的配置教程总结而来,尽希望能帮助学习移动图像处理的朋友们少走弯路.这也是本人第一次在简书上发布文章,如有不足,希望各位d ...
- Dynamics AX 2012 R3 Demo 安装与配置 - 编译和配置 (Step 3)
在前两节中,Reinhard主要讲解了如何配置安装环境,安装数据库服务器,AOS和客户端.至此安装工作已经结束,下面Reinhard开始讲解如何编译和配置. 运行客户端后,系统弹出初始 ...
- Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)
尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布V ...
- linux内核编译环境配置
linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...
- haproxy1.7编译安装配置
#haproxy1.7编译安装配置#高可用.负载均衡 使用 #haproxy1.7编译安装配置 #centos7 x86_64 #高可用.负载均衡 使用 #下载 #http://www.haproxy ...
- ACE在windows下的编译及配置(VS2010)
ACE在windows下的编译及配置(VS2010) 分类: -[小西南]- 2013-08-06 16:17 2354人阅读 评论( ...
随机推荐
- 爱上MVC~图表的使用Chart
回到目录 图表在一个系统中是必须的,MVC架构把它当然是一个扩展集成了进来,通过简单的几句话就可以生成一个风格多样的图表,这给报表的开发带来了很大的方便,大叔的项目中也做了一个测试,把主要的代码贴出来 ...
- 利用节点更改table内容
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document ...
- 从零开始学Python06作业思路:学生选课系统
一,作业要求 选课系统: 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 学生:用户名.密码.性别.年龄.选课列表[].上课记录{课程1:[di,a,]} ...
- BZOJ 1044 木棍分割 解题报告(二分+DP)
来到机房刷了一道水(bian’tai)题.题目思想非常简单易懂(我的做法实际上参考了Evensgn 范学长,在此多谢范学长了) 题目摆上: 1044: [HAOI2008]木棍分割 Time Limi ...
- java基础知识总结(2)
抽象方法的定义语法: 访问修饰符 abstract <返回类型> <方法名>(参数列表): 在语法中:abstract关键字表示该方法被定义为抽象方法 抽象方法和普通方 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- Java设计模式之单例模式
很多人都疑惑,单例模式是什么?为什么要用单例模式?在这里,笔者记录的仅仅只是自己对于知识点的理解,如果有错误的,请下方评论指教,共同进步,谢谢. 单例模式是什么? 简单理解: 单例就是一个实例被多个用 ...
- javascript如何设置DIV背景色为随机色
随机色有两种格式: 效果预览:http://wjf444128852.github.io/DEMOLIST/JS/test/index.html 1.rgb(xxx,xxx,xxx) 2.#xxxxx ...
- jQuery - 全国省市县三级联动
最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...
- iOS通知中心升级 -可设置按优先级执行block
简单介绍下,这是需求驱动中发现iOS的NotificationCenter有很多功能无法实现,于是对其进行了一层包装.相当于手动管理观察者栈和监听者期望执行的事件,因此可以为其添加了很多新增的功能,将 ...