Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Windows 下使用 CMake + Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块

Windows 下使用 CMake + Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块

作者头像
OpenCV学堂
发布于 2024-04-24 09:18:51
发布于 2024-04-24 09:18:51
2.2K0
举报

一. 背景

目前维护的某个项目是在 Windows 下运行的,并且使用了 OpenCV 4.5.2 版本。

我本地的开发环境是 Mac 并使用了比较新的 OpenCV 4.8.1 版本。为了和本地开发环境保持一致,我打算对项目中使用的 OpenCV 进行升级,因为该项目还是用了扩展模块的一些功能,所以需要自行编译。

本文只是记录自己在编译时踩过的坑,避免下次再犯或者给有需要的人。

二. 需要准备的软件

CMake 3.13 或者以上版本 https://cmake.org/

Visual Studio 2022 社区版本 https://visualstudio.microsoft.com/zh-hans/vs/

OpenCV 4.8.1 源码包 https://github.com/opencv/opencv/releases/tag/4.8.1

OpenCV 4.8.1 扩展模块源码包 https://github.com/opencv/opencv_contrib/releases/tag/4.8.1

三. 编译

3.1 使用 CMake

3.1.1 准备工作

解压 OpenCV4.8.1 源码包和扩展模块源码包到某个位置

打开 cmake-gui,设置 OpenCV4.8.1 源码的位置和输出编译的二进制文件的位置

3.1.2 Configure

点击"Configure",弹窗会显示build目录没有创建,是否需要创建。

点击“Yes"之后,CMake 会让你选择使用什么工具来生成这个项目。我们采用 Visual Studio 2022。

"Configure"配置成功后,会出现这个界面

此时,我们可以设置扩展模块的路径

扩展模块的路径在设置时,一定要到 modules 这个文件夹,否则后面再次"Configure"会失败。

如果需要编译 OpenCV World 模块,也需要在这里单独设置。

World 模块是一个超级模块(super-module),它结合了用户选择的所有其它模块。它是一个一体化(all-in-one)模块,具有所有库的功能。

然后再次点击"Configure"。

此时,最好看一下 CMake 的下载日志,下面的文件是 CMake 的下载日志。

cmake 的下载日志.jpg

某些文件的无法下载可能会最终导致 OpenCV World 模块无法编译成功。

我主要是修改这几个地方:

a. 进入 C:/opencv-4.8.1/opencv-4.8.1/3rdparty/ippicv 目录 将 ippicv.cmake 的 https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

b. 进入 C:/opencv-4.8.1/opencv-4.8.1/3rdparty/fmpeg 目录 将 ffmpeg.cmake 的 https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

c. 进入 C:/opencv_contrib-4.8.1/opencv_contrib-4.8.1/modules/xfeatures2d/cmake 目录 将 download_boostdesc.cmake 中的https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

d. 进入 C:/opencv_contrib-4.8.1/opencv_contrib-4.8.1/modules/xfeatures2d/cmake 目录 将 download_vgg.cmake 中的 https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

e. 进入 C:/opencv_contrib-4.8.1/opencv_contrib-4.8.1/modules/face 目录 修改 CMakeLists.txt, 将https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

之后再重新"Configure"即可。

3.1.3 Generate

接下来,点击"Generate"生成使用 CMake 构建的项目

3.1.4 Open Project

最后点击"Open Project",唤起 Visual Studio 2022 打开该项目。

当然也可以去输出编译的二进制文件的目录(C:/opencv-4.8.1/newbuild) ,打开 OpenCV.sln 文件达到同样的效果。

点击"Open Project".jpg

3.2 使用 Visual Studio 2022

在编译之前,先配置 opencv_world 模块,然后选择 release 或者 debug。

找到 CMakeTargets,选择 ALL_BUILD 进行生成。

上述步骤生成成功后,选择 INSTALL 进行生成。

INSTALL 生成成功后,这次编译算是大功告成了。我们完成了OpenCV4.8.1 及其扩展模块的编译。

我们可以在输出编译的二进制文件的目录(C:/opencv-4.8.1/newbuild)下找到 install 文件夹

install 文件夹最终输出的内容如下

我们也成功编译了 opencv_world 模块。

四. 总结

本文只是便于自己日后翻阅和查找。

不过整个编译过程花费了1天多才搞定。编译的时候遇到各种问题,其实只要仔细阅读日志进行分析,总能解决。

当然,自行编译 OpenCV 库有很多好处,可以根据自己的需要定制 OpenCV 库,可以针对特定的硬件平台优化 OpenCV 库等等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【从零学习OpenCV 4】opencv_contrib扩展模块的安装
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
小白学视觉
2019/10/15
2.2K0
【C++】OpenCV:计算机视觉库介绍及C++环境配置
OpenCV是一个跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。
DevFrank
2024/07/24
1.4K0
【C++】OpenCV:计算机视觉库介绍及C++环境配置
OpenCV4.5.x+CUDA11.0.x源码编译与YOLOv5加速教程!
点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 前言     OpenCV开发者基本技能之一就是要从源码编译OpenCV生成各种裁剪版本的OpenCV库,同时根据需要编译源码生产支持CUDA加速版本的OpenCV库。     但是,很多开发者还是编译中会遇到各种问题,被迫放弃!可以说还没用CUDA加速就已经自我放弃啦!     所以周末我又重新编译了一遍,针对各种问题,帮大家理清了对策,帮助大家可以完成OpenCV+CUDA编译,实现性能加速! 软件版本信息:
OpenCV学堂
2022/07/19
1.1K0
OpenCV4.5.x+CUDA11.0.x源码编译与YOLOv5加速教程!
opencv-contrib模块详解_opencv安装包
近来由于需要用到 opencv 的SIFT特征,但是SIFT等功能已经移入了opencv_contrib 中,所以需要重新编译opencv和opencv_contrib。
全栈程序员站长
2022/09/27
3.2K0
Windows下编译OpenCV3.4及扩展模块
https://github.com/opencv/opencv_contrib/releases/tag/3.4.0
OpenCV学堂
2018/07/25
1K0
Windows下编译OpenCV3.4及扩展模块
Ubuntu16.04安装OpenCV
这里需要下载 opencv 和 opencv_contrib (后者会在 cmake 配置的时候用到), 这是因为 opencv3以后 SIFT 和 SURF 之类的属性被移到了 contrib 中,执行下面两条指令下载 OpenCV3.2.0
foochane
2019/05/23
2K0
OpenCV(c++)-1 安装和配置OpenCV4.4(Windows+visual studio 2019)
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
程序员小涛
2020/12/03
3.7K0
OpenCV(c++)-1 安装和配置OpenCV4.4(Windows+visual studio 2019)
Mac-OSX的Python3.5虚拟环境下安装Opencv
用户1170933
2018/01/05
1.4K0
java+opencv_opencv使用教程
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法(百度百科)。
全栈程序员站长
2022/11/14
2.1K0
java+opencv_opencv使用教程
最新 | OpenCV4.8 + CUDA + 扩展模块支持编译指南
设置完成以后,搜索CUDA关键字,全部勾上相关选项之后继续点击【Configrure】,运行完成以后,再次搜索CUDA关键字,选择如下:
OpenCV学堂
2023/12/01
9080
最新 | OpenCV4.8 + CUDA + 扩展模块支持编译指南
一次搞定OpenCV源码及扩展模块的编译与环境配置
安装OpenCV时的环境配置以及扩展模块的编译对于多数新手来说都是令人头疼的问题,希望通过这篇文章可以帮助新手们一次搞定OpenCV的安装与扩展模块编译问题。
3D视觉工坊
2020/12/11
4.1K0
一次搞定OpenCV源码及扩展模块的编译与环境配置
ubuntu 16.0.4 opencv 4.0.0 + opencv_contrib 4.0.0 cmake-gui 安装
1、首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:
用户1148525
2019/05/27
1.8K0
ubuntu 16.0.4 opencv 3.4.1 + opencv_contrib 3.4.1 cmake-gui 安装
1、首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:
用户1148525
2019/05/27
1.7K0
win10_opencv4.2_cuda11_vs2019 编译
查看cuda11支持的vs版本:https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
shirishiyue
2020/09/10
3.9K2
Windows 下编译 OpenCV 和 OpenCV-contrib
在本文中,我们将介绍如何在 Windows 系统下编译 OpenCV 和 OpenCV-contrib。OpenCV 是一个开源的计算机视觉库,它包含了许多图像处理和计算机视觉的功能。而 OpenCV-contrib 则是一个由社区贡献的额外功能模块,可以为 OpenCV 提供更多的功能。
繁依Fanyi
2023/10/12
1.7K0
Windows 下编译 OpenCV 和 OpenCV-contrib
从源码安装OpenCV,使用python
需要的有两个部分:opencv 和opencv_contrib 这两个部分选择相同的版本,opencv_contrib是opencv的扩充.
py3study
2020/01/10
2.4K0
『转』 opencv3.3.0 && opencv_contrib3.3.0 for AndroidNDK
Windows环境使用CMake编译 opencv3.3.0 && opencv_contrib3.3.0 for AndroidNDK
jerrypxiao
2021/02/22
7620
『转』 opencv3.3.0 && opencv_contrib3.3.0 for AndroidNDK
TSN Usage——如何编译和使用temporal-segment-networks
TSN是”temporal-segment-networks”的简称,是视频动作识别任务里面当前最好的方法。虽然这个结构是在ECCV2016的论文里面提出来的,代码也放出来挺长时间了,但是这个项目里面集合了Caffe, OpenCV,CUDA,CUDNN等几大神坑项目,不同版本之间的依赖、选择等问题很麻烦,因此我之前编译了好几次都没有能够编译成功。这次花了近一天的时间来重新编译了一下整个项目,虽然还是有些问题,例如MPI编译没有通过,CUDA8貌似不支持,CuDNN v5好像也不支持,但最后总算是编译通过,可以运行了。所以记录一下整个的过程,期望对自己和别人能够有所帮助。
王云峰
2019/12/25
1.4K0
OpenCV4.X CUDA编译与加速全解析
OpenCV4.x + CUDA概述 OpenCV4.x中关于CUDA加速的内容主要有两个部分,第一部分是之前OpenCV支持的图像处理与对象检测传统算法的CUDA加速;第二部分是OpenCV4.2版本之后开始支持的针对深度学习卷积神经网络模型的CUDA加速。这些内容都在OpenCV的扩展模块中,想要获取这OpenCV CUDA的支持,必须首先编译OpenCV CUDA相关的模块,这里主要是开展模块以CUDA开头的那些。此外编译的电脑或者PC必须有N卡(英伟达GPU卡),并且按照好了正确版本的驱动与cuDN
OpenCV学堂
2022/09/07
1.4K0
OpenCV4.X CUDA编译与加速全解析
OpenCV4.4 CUDA编译与加速全解析
OpenCV4.4中关于CUDA加速的内容主要有两个部分,第一部分是之前OpenCV支持的图像处理与对象检测传统算法的CUDA加速;第二部分是OpenCV4.2版本之后开始支持的针对深度学习卷积神经网络模型的CUDA加速。这些内容都在OpenCV的扩展模块中,想要获取这OpenCV CUDA的支持,必须首先编译OpenCV CUDA相关的模块,这里主要是开展模块以CUDA开头的那些。此外编译的电脑或者PC必须有N卡(英伟达GPU卡),并且按照好了正确版本的驱动与cuDNN支持软件。本文分为两个部分来说明如何在OpenCV中实现CUDA加速,第一部分是实现CUDA支持版本OpenCV编译,第二部分是OpenCV CUDA SDK编程代码演示。
AI算法与图像处理
2020/10/23
2.2K0
推荐阅读
相关推荐
【从零学习OpenCV 4】opencv_contrib扩展模块的安装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档