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

文章目录

  • 下载OpenCV-4.5.3源码
  • 下载opencv_contrib-4.5.3源码
  • 打开cmake-gui
    • 选择生成器
  • 通过 Visual Studio 2019 打开构建好的.sln工程文件
    • 执行编译操作
    • 执行安装操作

下载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工程只是适用于来生成编译后的结果及发布结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/227321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSG中几何体的绘制(二)

5. 几何体操作 在本章的前言中就讲到,场景都是由基本的绘图基元构成的,基本的绘图基元构成简单的几何体,简单的几何体构成复杂的几何体,复杂的几何体最终构造成复杂的场景。当多个几何体组合时,可能存在多种降低场景渲染效率的原因…

AlexNet(pytorch)

AlexNet是2012年ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络,分类准确率由传统的 70%提升到 80% 该网络的亮点在于: (1)首次利用 GPU 进行网络加速训练。 &#xff…

Idea中操作Git使用cherry pick

Idea中操作Git使用cherry pick 使用场景使用功能步骤 使用场景 代码开发中,新功能还未开发完,但是master分支需要使用带新功能中的一次提交的代码,就可以使用cherry pack(优选). 使用功能步骤 切换到master分支选中dev分支双击选择需要使用的提交右键,如果有冲突就会弹窗解…

Netty—NIO万字详解

文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一:缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明: 核心二:通道 (Channel)Channel类及其…

防止反编译,保护你的SpringBoot项目

ClassFinal-maven-plugin插件是一个用于加密Java字节码的工具,它能够保护你的Spring Boot项目中的源代码和配置文件不被非法获取或篡改。下面是如何使用这个插件来加密test.jar包的详细步骤: 安装并设置Maven: 首先确保你已经在你的开发环境中…

windows 10 安装和配置nginx

1 下载nginx 1.1 下载地址:http://nginx.org/en/download.html 1.2 使用解压到安装目录 1.3 更改配置 conf目录下nginx.conf 修改为未被占用的端口,地址改成你的地址 server {listen 9999;server_name localhost;#charset koi8-r;#access_lo…

2 使用postman进行接口测试

上一篇:1 接口测试介绍-CSDN博客 拿到开发提供的接口文档后,结合需求文档开始做接口测试用例设计,下面用最常见也最简单的注册功能介绍整个流程。 说明:以演示接口测试流程为主,不对演示功能做详细的测试,…

【数据结构】双链表的定义和操作

目录 1.双链表的定义 2.双链表的创建和初始化 3.双链表的插入节点操作 4.双链表的删除节点操作 5.双链表的查找节点操作 6.双链表的更新节点操作 7.完整代码 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助…

WPF-UI HandyControl 控件简单实战

文章目录 前言UserControl简单使用新建项目直接新建项目初始化UserControlGeometry:矢量图形额外Icon导入最优解决方案 按钮Button切换按钮ToggleButton默认按钮图片可切换按钮加载按钮切换按钮 单选按钮和复选按钮没有太大特点,就不展开写了总结 DataGrid数据表格G…

详细了解stm32---按键

提示:永远支持知识文档免费开源,喜欢的朋友们,点个关注吧!蟹蟹! 目录 一、了解按键 二、stm32f103按键分析 三、按键应用 一、了解按键 同学们,又见面了o(* ̄▽ ̄*)ブ,最…

C++ Qt开发:Tab与Tree组件实现分页菜单

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍tabWidget选择夹组件与TreeWidget树形选择组件…

升华 RabbitMQ:解锁一致性哈希交换机的奥秘【RabbitMQ 十】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 升华 RabbitMQ:解锁一致性哈希交换机的奥秘【RabbitMQ 十】 前言第一:该插件需求为什么需要一种更智能的消息路由方式?一致性哈希的基本概念: 第二&…

【Linux】MySQL 数据库安装配置教程(Ubuntu 22.04)

前言 MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛用于Web应用程序的后端数据存储,如许多动态网站、电子商务系统和在线出版物等。 MySQL具有高性能、可靠性和易用性的特点,它支持大型数据库,…

【Java】使用递归的方法获取层级关系数据demo

使用递归来完善各种业务数据的层级关系的获取 引言:在Java开发中,我们通常会遇到层层递进的关系型数据的获取问题,有时是树状解构,或金字塔结构,怎么描述都行,错综复杂的关系在程序中还是可以理清的。 这…

uniGUI之上传文件UniFileUploadButton

TUniFileUploadButton主要属性: Filter: 文件类型过滤,有图片image/* audio/* video/*三种过滤 MaxAllowedSize: 设置文件最大上传尺寸; Message:标题以及消息文本,可翻译成中文 TUniFileUploadButton控件 支持多…

云原生之深入解析Linkerd Service Mesh的功能和使用

一、简介 Linkerd 是 Kubernetes 的一个完全开源的服务网格实现,它通过为你提供运行时调试、可观测性、可靠性和安全性,使运行服务更轻松、更安全,所有这些都不需要对代码进行任何更改。Linkerd 通过在每个服务实例旁边安装一组超轻、透明的…

MX6ULL学习笔记(十二)Linux 自带的 LED 灯

前言 前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动,Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可,本章我们就来学…

Python基础05-函数

零、文章目录 Python基础05-函数 1、函数的作用及其使用步骤 (1)函数的作用 在Python实际开发中,我们使用函数的目的只有一个“让我们的代码可以被重复使用” 函数的作用有两个: ① 代码重用(代码重复使用&#xf…

【AI工具】GitHub Copilot IDEA安装与使用

GitHub Copilot是一款AI编程助手,它可以帮助开发者编写代码,提供代码建议和自动完成功能。以下是GitHub Copilot在IDEA中的安装和使用步骤: 安装步骤: 打开IDEA,点击File -> Settings -> Plugins。在搜索框中输…

windows10 php8连接sql server

一、环境安装 文章目录 一、环境安装1.安装php拓展2.在 Windows 上安装PHP驱动程序3.在 Windows 上安装ODBC驱动 二、php连接sqlserver三、注意事项数据库相关设置相关语法sqlsrv_fetch_array 的示例:sqlsrv_fetch 的示例:echo 和 print_r 的不同 所用资…