在Windows上通过cmake-gui及VS2019来 编译OpenCV-4.5.3源码

2023-12-17

下载OpenCV-4.5.3源码

可通过github上下载,网上很多,找到tag标签,选择 OpenCV-4.5.3 进去后,找到 sourceCode.zip。然后点击下载。
如下:
下载地址
进来之后,点击 下图中的 tags 标签
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以找台网络好的Linux云机器上直接输入 wget https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip 进行下载

下载opencv_contrib-4.5.3源码

下载地址

也是仿照上面的方式进行下载,由于opencv_contrib-4.5.3是opencv的一个模块,因此编译OpenCV时需要这个。

源码准备好的截图如下:
在这里插入图片描述
由于github时常打不开,导致下载不了上方的源码。这里提供了网盘下载的方式:
链接:https://pan.baidu.com/s/1nTKa72azGfCXJynqwhEeFw
提取码:14bz
下载完毕后解压下就行了。

打开cmake-gui

在这里插入图片描述
之前已经安装过了。没有安装过,可以看下这篇: cmake安装
在这里插入图片描述
在这里插入图片描述

选择生成器

在这里插入图片描述
ps:上图说的vcproj纠正为是vcxproj。

配置好后,点击上图的Finish。
然后就自动开始解析CmakeList.txt文件中的配置,包括自动从当前电脑系统环境下查找CmakeList.txt文件中各种变量的符合要求的值,已经解析CmakeList.txt中的各个源文件是否存在。(自动识别),已经从第三方那里下载所需要的库。配置解析完毕后,会在中间 Name- Value 那片显示区域,会把解析后CmakeList.txt文件中各种变量的名称,已经从当前系统环境变量中查找的值及当前变量的状态都显示出来。
现在的开源项目基本上都是用cmake来进行管理。cmake就是一个项目管理工具。根据CmakeList.txt中的编写的规则来组织项目的构建步骤。一个大的开源项目下,会有多个模块,每个模块下又有各自的CmakeList.txt文件。但是开源项目的根目录只有一个CmakeList.txt。
根目录下的CmakeList.txt文件内会引入各个模块下的CmakeList.txt文件。这就有点类似于java中的 maven的作用。

在这里插入图片描述

这里我们把上图里底部打印出的内容粘出来看看。

Selecting Windows SDK version 10.0.22000.0 to target Windows #选择本机上适合的Windows SDK
10.0.22621. Detected processor: AMD64 #检测到本地的处理器架构

Found PythonInterp: D:/software/python/python.exe (found suitable version “3.8.6”, minimum required is “2.7”) #检测到本机安装的python是3.8.6.而最小要求是2.7满足要求。如果需要将OpenCV用于python。这里需要把python加入系统环境变量Path中这里才能检测到。


下面的提示有个zip没有从网络上下载下来。
IPPICV: Download: ippicv_2020_win_intel64_20191018_general.zip
Try 1 failed

=======================================================================
  Couldn't download files from the Internet. #不能够从互联网上下载此文件
  Please check the Internet access on this host.
=======================================================================

CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  IPPICV: Download failed: 6;"Couldn't resolve host name"

  For details please refer to the download log file:

  D:/vs_project/OpenCV/bulid_x64/CMakeDownloadLog.txt  #查看这个日志文件,手动下载此文件
OpenCV Python: during development append to PYTHONPATH: D:/vs_project/OpenCV/bulid_x64/python_loader
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
FFMPEG: Download: opencv_videoio_ffmpeg.dll
Try 1 failed
.......................................
FFMPEG: Download: opencv_videoio_ffmpeg_64.dll
Try 1 failed

D:/vs_project/OpenCV/bulid_x64/CMakeDownloadLog.txt 中的内容:
在这里插入图片描述
根据日志文件可知有三个文件下载失败:

  1. ippicv_2020_win_intel64_20191018_general.zip
  2. opencv_videoio_ffmpeg.dll
  3. opencv_videoio_ffmpeg_64.dll
    根据日志文件里提示ippicv_2020_win_intel64_20191018_general.zip是从https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_win_intel64_20191018_general.zip路径下载文件到D:/vs_project/OpenCV/opencv-4.5.3/.cache/ippicv/879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip。
    在这里插入图片描述
    下载通过手动方式下载。本人是从华为云上通过wget方式下载的。
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_win_intel64_20191018_general.zip

在这里插入图片描述
然后手动添加后uuid前缀,放到Windows的指定目录上。
在这里插入图片描述
另外两个:https://raw.githubusercontent.com/opencv/opencv_3rdparty/213fcd5d4897319a83207406036c4a5957fba010/ffmpeg/opencv_videoio_ffmpeg.dll 到 D:/vs_project/OpenCV/opencv-4.5.3/.cache/ffmpeg/bab661341c30862fa88627130219c0a5-opencv_videoio_ffmpeg.dll

https://raw.githubusercontent.com/opencv/opencv_3rdparty/213fcd5d4897319a83207406036c4a5957fba010/ffmpeg/opencv_videoio_ffmpeg_64.dll 到 D:/vs_project/OpenCV/opencv-4.5.3/.cache/ffmpeg/ac99f9767a83103c31709628af685924-opencv_videoio_ffmpeg_64.dll
也是按照上述方式下载,然后放到指定目录下。
在这里插入图片描述
下载比较慢…。待其下载完毕后放到指定目录下就行。
其实上面的这几个文件不下载,也不影响后续的操作。只是将来的exe,dll或者lib文件不包含这些功能罢了。
在这里插入图片描述
在这里插入图片描述
接下来说说红框里的设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来,进入到D:\vs_project\OpenCV\bulid_x64目录下,就可以看到通过cmake构建好的项目工程。里面可以看到.sln(解决方案文件)和大量的.vcxproj(工程文件),以及各个模块下也有.vcxproj文件。
在这里插入图片描述

通过 Visual Studio 2019 打开构建好的.sln工程文件

这样通过cmake就把Visual Studio 2019 上的解决方案工程构建好了。
双击OpenCV.sln 会自动用Visual Studio 2019 打开。
在这里插入图片描述

执行编译操作

执行ALL_BUILD命令(底层会调用VS MSBuild命令,对.vcxproj文件内容进行读取通过gl.exe执行编译及链接的整个过程)(release /x64)
在这里插入图片描述
注意 :虽然通过cmake新构建好的项目在D:\vs_project\OpenCV\bulid_x64目录下,但是OpenCV的源码并没有在bulid_x64目录下。所以是执行ALL_BUILD(对源码的实际编译时),原来的源码位置:D:\vs_project\OpenCV\opencv-4.5.3及其下的CMakeLists.txt文件还是需要被引用使用的。否则在ALL_BUILD会报错。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到有的工程最后编译完后生成了lib库,有的生成了dll库,有的生成了exe文件。
它们都被放到了:D:\vs_project\OpenCV\bulid_x64\bin\Release目录下了。

执行安装操作

接下来执行 INSTALL:
在这里插入图片描述
执行完毕后:会在D:\vs_project\OpenCV\bulid_x64目录下创建一个install目录 在这里插入图片描述
有时候,生成的dll和lib文件有多个,有时候只有几个。和有没有勾选BUILD_opencv_world有关:没有勾选这一项的话,会生成很多dll及lib文件。勾选的话,可能只生成一两个库文件。其中包括opencv_world453.dll。这个dll库包括了其他的dll库。
在这里插入图片描述
至此构建及编译结束!
个人总结 :开源项目发布时是通过CMake来管理项目结构的。但是通过cmake项目使用指定生成器 构建出的.sln工程和实际使用VS创建的.sln工程还不一样。我们进行二次开发的话,还是要在CMake来管理项目下开发。而这种构建出的.sln工程只是适用于来生成编译后的结果及发布结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windows上通过cmake-gui及VS2019来 编译OpenCV-4.5.3源码 的相关文章

随机推荐

  • 牛客小白月赛83 解题报告

    题目链接 https ac nowcoder com acm contest 72041 question A题 解题思路 签到 代码 include
  • OSG中几何体的绘制(二)

    5 几何体操作 在本章的前言中就讲到 场景都是由基本的绘图基元构成的 基本的绘图基元构成简单的几何体 简单的几何体构成复杂的几何体 复杂的几何体最终构造成复杂的场景 当多个几何体组合时 可能存在多种降低场景渲染效率的原因 在很多3D引擎中
  • 中文星期几&十二时辰

    输入年月日输出中文星期败 输入时间字符串 输出十二时辰 笔记模板由python脚本于2023年12月16日 23 39 04创建 本篇笔记适合 熟悉python字符串类型str 并可以熟练应用 的coder翻阅 学习的细节是欢悦的历程 Py
  • 时序预测 | Python实现GRU电力需求预测

    时序预测 Python实现GRU电力需求预测 目录 时序预测 Python实现GRU电力需求预测 预测效果 基本描述 程序设计 参考资料
  • 软件工程期末复习+数据仓库ETL

    一 软件工程 请用基本路径测试方法为下列程序设计测试用例 并写明中间过程 第1步 画出流程图 1 菱形用于条件判断 用在有分支的地方 2 矩形表示一个基本操作 3 圆形是连接点 第2步 计算程序环路复杂性 流图G的环路复杂度V G 定义为
  • 十七、如何将MapReduce程序提交到YARN运行

    1 启动某个节点的某一个用户 hadoop node1 jps 13025 Jps hadoop node1 yarn daemon start resourcemanager hadoop node1 jps 13170 Resource
  • ES6 面试题 | 14.精选 ES6 面试题

    前端开发工程师 主业 技术博主 副业 已过CET6 阿珊和她的猫 CSDN个人主页 牛客高级专题作者 在牛客打造高质量专栏 前端面试必备 蓝桥云课签约作者 已在蓝桥云课上架的前后端实战课程 Vue js 和 Egg js 开发企业级健康管理
  • 你好,C++(3)2.1 一个C++程序的自白

    第2部分 与C 第一次亲密接触 在浏览了C 三分天下 的世界版图之后 便对C 有了基本的了解 算是一只脚跨入了C 世界的大门 那么 怎样将我们的另外一只脚也跨入C 世界的大门呢 是该即刻开始编写C 程序 还是 正在我们犹豫的时候 便看到前面
  • 剑指 Offer(第2版)面试题 34:二叉树中和为某一值的路径

    剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 解法1 深度优先搜索 剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 题目来源 47 二叉
  • ES6 面试题 | 13.精选 ES6 面试题

    前端开发工程师 主业 技术博主 副业 已过CET6 阿珊和她的猫 CSDN个人主页 牛客高级专题作者 在牛客打造高质量专栏 前端面试必备 蓝桥云课签约作者 已在蓝桥云课上架的前后端实战课程 Vue js 和 Egg js 开发企业级健康管理
  • 时序预测 | Python实现GRU-XGBoost组合模型电力需求预测

    时序预测 Python实现GRU XGBoost组合模型电力需求预测 目录 时序预测 Python实现GRU XGBoost组合模型电力需求预测 预测效果 基本描述 程序设计 参考资料
  • DeepCache

    这里介绍一种名为DeepCache的无需训练的方法 它利用了去噪过程中模型深层特征的相似性 通过缓存 Cache 来避免重新计算网络中的深层特征 仅计算网络的浅层 从而减少计算量 实验展示了DeepCache相较于需要重新训练的现有剪枝和蒸
  • 时序预测 | Python实现LSTM-Attention电力需求预测

    时序预测 Python实现LSTM Attention电力需求预测 目录 时序预测 Python实现LSTM Attention电力需求预测 预测效果 基本描述 程序设计 参考资料
  • 时序预测 | Python实现LSTM-Attention-XGBoost组合模型电力需求预测

    时序预测 Python实现LSTM Attention XGBoost组合模型电力需求预测 目录 时序预测 Python实现LSTM Attention XGBoost组合模型电力需求预测 预测效果 基本描述 程序设计 参考资料
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(基础篇)(十三)

    目录 前言 几个高频面试题目 人工智能 机器学习 计算机视觉之间的关系 知识储备 计算机视觉 计算机图像学 图像处理基础知识 光学棱镜
  • 工业缺陷检测~

    这里介绍算法在图像处理中的应用 同时还介绍了常用的图像处理算法和现有可用的视觉检测软件库 文章旨在帮助读者更好地了解算法在图像处理中的应用 提高图像处理的效果和效率 算法 预处理算法 检测算法 常用的图像处理算法 1 图像变换 空域与频域
  • WPF-UI HandyControl 控件简单实战

    文章目录 前言 UserControl简单使用 新建项目 直接新建项目 初始化UserControl Geometry 矢量图形 额外Icon导入
  • 关于“Python”的核心知识点整理大全24

    10 1 6 包含一百万位的大型文件 前面我们分析的都是一个只有三行的文本文件 但这些代码示例也可处理大得多的文件 如果我们有一个文本文件 其中包含精确到小数点后1 000 000位而不是30位的圆周率值 也可 创建一个包含所有这些数字的字
  • 知识图谱之关键实体数据爬取

    目录 爬取实体概览 爬取技术介绍 requests html Selenium 两者比较 学习路径 代码结构 高可用爬取策略 基于文件记录位点 请求失败指数退避重试 爬取代码 品牌数据 车系数据 车型数据 车型配置数据 代码地址 爬取实体概
  • 在Windows上通过cmake-gui及VS2019来 编译OpenCV-4.5.3源码

    文章目录 下载OpenCV 4 5 3源码 下载opencv contrib 4 5 3源码 打开cmake gui 选择生成器 通过 Visual Studio 2019 打开构建好的 sln工程文件 执行编译操作 执行安装操作