当前位置: 首页 > news >正文

Opencv 编译

转载 https://www.cnblogs.com/xinxue/p/5766756.html

 OpenCV 3.4 版本,圣诞节前发布了,该版本新增了一种去掉视频背景的算法,dnn 模块的进一步改进,速度的提升,以及一些新添加的 tutorials 等等。

      

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

1  下载准备
1.1  Win10
  Windows 10 专业版,64 位

  注:安装 VS 2015 时,要求操作系统 Win7 Service Pack 1 以上

1.2  VS or Qt
  选择一: Visual Studio 2015,专业版,下载链接  https://www.visualstudio.com/downloads/

  选择二: VS2015 + Qt 5.9.3,对应 qt-opensource-windows-x86-5.9.3.exe,下载地址 https://www1.qt.io/download-open-source/#section-2

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

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

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

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/tag/3.4.0

   

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

 

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

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

  

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

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

    

2.2  配置
2.2.1  opencv-maste

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

  

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

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

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

             

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

    

2.2.2  opencv_contrib-master

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

     

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

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

2.3  VS 生成   
2.3.1  Python 问题

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

    

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

    

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

2.3.2  生成库

    进入到生成的 build 目录下,找到 OpenCV.sln,使用 VS 2015 打开。

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

      

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

    

 

3  VS 下的配置
  1)  环境变量

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

    

  2)  头文件和库文件

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

      库文件: D:\opencv\build\x64\vc14\lib

     

  3)  依赖项

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

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

     

 

4  Qt 下的配置
 1)  环境变量

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

  另外,不要忘记添加 Qt 的 path 变量值 D:\Qt\Qt5.9.3\5.9.3\msvc2015\bin;

 2)  头文件和库文件

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

LIBS += -L$$PWD/../../opencv/build/x64/vc14/lib/ -lopencv_highgui340d \
        -lopencv_core340d \
        -lopencv_imgproc340d  \
        -lopencv_imgcodecs340d

INCLUDEPATH += $$PWD/../../opencv/build/include
 可根据具体的需要,适当添加新的库文件,比如,用于人脸识别的 opencv_face340d,深度神经网络 opencv_dnn340d 等等。

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

 

参考资料
  vs12 vs2013 下opencv3.0配置扩展模块   Icoding_F2014

 

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

 

转载于:https://www.cnblogs.com/profession/p/8383665.html

相关文章:

  • Python2.7-copy_reg
  • SQL——STUFF用法
  • 《数据库系统概念》20-恢复系统
  • 深入理解CAST和CONVERT提供的具体功能
  • kafka实战
  • sql server 2000/2005/2008 判断存储过程、触发器、视图是否存在并删除
  • 【转】C#中静态方法和非静态方法的区别
  • MSSQL sysobjects type 类型汇总
  • Todo list
  • UVa-1588 Kickdown(换低档装置)
  • 大数据学习线路整理
  • Unity Android 5.6版本Resources.Load效率的问题
  • SQL——自定义的fn_Split函数
  • [js]js设计模式小结
  • 创建链接服务器
  • [case10]使用RSQL实现端到端的动态查询
  • bootstrap创建登录注册页面
  • ES6核心特性
  • IDEA常用插件整理
  • JavaScript设计模式系列一:工厂模式
  • Octave 入门
  • SpingCloudBus整合RabbitMQ
  • springMvc学习笔记(2)
  • zookeeper系列(七)实战分布式命名服务
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 入口文件开始,分析Vue源码实现
  • 微服务入门【系列视频课程】
  • 微信小程序设置上一页数据
  • 详解NodeJs流之一
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 仓管云——企业云erp功能有哪些?
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (区间dp) (经典例题) 石子合并
  • (算法)求1到1亿间的质数或素数
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .“空心村”成因分析及解决对策122344
  • .Family_物联网
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 微服务 服务保护 自动重试 Polly
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @Autowired多个相同类型bean装配问题
  • @Pointcut 使用
  • @property python知乎_Python3基础之:property
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ C++ ] STL---string类的模拟实现
  • [ C++ ] 继承
  • [2016.7.Test1] T1 三进制异或
  • [BJDCTF 2020]easy_md5
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [BZOJ1178][Apio2009]CONVENTION会议中心