热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

opencvpython编译_OpenCV4.3编译和配置

OpenCV4.3.0版本,在4月份发布了,新加的功能说明如下:其中,imgproc模块的HoughCircles()函数

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

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

890227-20200410112246223-560078746.png

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

890227-20200410114646797-2077304547.png

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

1 下载准备

1.1 Win10

Windows 10 专业版,64 位

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

1.2 VS or Qt

选择二: 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 运行。

1.4 OpenCV

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

890227-20200410115951669-1736931192.png

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

890227-20200410120156084-1994342196.png

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

2 cmake 编译

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

2.1 运行

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

890227-20200411111315613-1278057996.jpg

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

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

890227-20171013085758605-1617679050.png

2.2 配置

2.2.1 opencv-maste

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

890227-20200410205118065-1645783489.png

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

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

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

890227-20200411101621775-240203323.jpg

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

890227-20200411102948980-511360118.jpg

2.2.2 opencv_contrib-master

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

890227-20200411100536200-45355531.jpg

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

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

2.3 VS 生成

2.3.1 Python 问题

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

890227-20171014124307137-716121370.png

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

890227-20171014134408262-980382764.png

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

2.3.2 生成库

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

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

890227-20160813234814187-236273216.png

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

890227-20171012210942105-2062441308.png

3 VS 下的配置

1) 环境变量

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

890227-20200411123601867-358240666.jpg

2) 头文件和库文件

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

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

890227-20200411124017928-379660198.jpg

3) 依赖项

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

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

890227-20200411124306785-2095738269.jpg

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 模块出现编译错误,生成不成功,其它模块生成并配置成功。

890227-20181121114753048-798802447.png

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,生成并配置成功。



推荐阅读
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • apk简单介绍APK的组成apk安装流程app的启动过程apk打包流程AIDLAIDL介绍为什么要设计这门语言它有哪些语法?默认支持的数据类型包括什么是apk打包流程 ... [详细]
  • Ubuntu16.0464位安装armlinuxgcc交叉编译器以及samba服务器
    交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包。以arm-l ... [详细]
  • 编译lib手动编译cmake编译gtest测试程序断言和caseFixture使用gmock编译gmock测试程序参考GtestGithub使用gtest(gmock)方便我们编写 ... [详细]
  • 开发笔记:googletest安装与使用
    本文由编程笔记#小编为大家整理,主要介绍了googletest安装与使用相关的知识,希望对你有一定的参考价值。简介googletest是Google公司 ... [详细]
  • 在windows上运行darknet目标检测框架可以借助VS强大、方便的debug功能来逐行跟踪代码,藉此来熟悉其内部运行原理。很简单,先进入http ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 我是python小白一枚,对kivy开发手机app产生了兴趣,并没感觉到kivy写代码有多难,折腾打包成手机apk倒是花了好长时间,走过了大大小小的坑,这里把经验记录下来,供大家参 ... [详细]
  • Mask-RCNN源码阅读笔记
    阅读了https:blog.csdn.netu011974639articledetails78483779?locationNum9&fps1这篇博客这篇博客介 ... [详细]
  • ImnewwithWinInetandhavefollowingsimpleC++code:我是WinInet的新手,有以下简单的c++代码:voidDoIt(std::s ... [详细]
  • 方舟等级生成工具_关于方舟编译器的几个小疑问
    之前了解了一下方舟编译器,但是很粗,今天在知乎上看了各种大神关于方舟编译器的说法,其实一直以来就有几个问题,我看了知乎上的说 ... [详细]
  • 自定义_自定义AXIIP核(转)
    本文由编程笔记#小编为大家整理,主要介绍了自定义AXI-IP核(转)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • git-canal:错误修改
    问题:2016-05-0422:53:48.848[destinationexample,address127.0.0.1:3306,EventParser]ERRO ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
author-avatar
爷_引领霸气
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有