Windows 下编译 OpenCV 和 OpenCV-contrib

news2025/2/12 0:47:05

文章目录

  • 导言
  • 环境准备
    • 源码获取
    • 环境获取
  • 配置 CMake 并编译
    • Configure
    • Generate
  • 生成项目
    • 总结

导言

在本文中,我们将介绍如何在 Windows 系统下编译 OpenCV 和 OpenCV-contrib。OpenCV 是一个开源的计算机视觉库,它包含了许多图像处理和计算机视觉的功能。而 OpenCV-contrib 则是一个由社区贡献的额外功能模块,可以为 OpenCV 提供更多的功能。

环境准备

在编译源码前,需要准备以下源码及环境,

  • OpenCV 源码
  • OpenCV-contrib 源码
  • Visual Studio 环境
  • CMake 环境

下面,将首先讲解如何获取编译源码所需的环境

源码获取

首先,我们需要从 GitHub 上克隆 OpenCV 和 OpenCV-contrib 的源代码:

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

在这里插入图片描述
在这里插入图片描述

然后,我们需要创建一个构建目录并进入该目录,source 中存放了 opencv 与 opencv_contrib 的代码,build 用来存放编译后的文件

在这里插入图片描述

环境获取

编译源码需要 CMake 环境,CMake 链接下载如下:

  • https://cmake.org/download/

在这里插入图片描述

注意下载对应操作系统的 CMake。下载完成后进行安装,安装完成后,可以看到 CMake(cmake-gui) 应用

在这里插入图片描述

之后获取 Visual Studio,获取链接如下:

  • https://visualstudio.microsoft.com/zh-hans/

在这里插入图片描述

下载适合您操作系统的 Visual Studio 安装即可。
在这里插入图片描述

配置 CMake 并编译

Configure

打开 CMake GUI,在 Where is the source code 中填写 opencv 源码,在 Where to build the binaries 中填写 build 路径,点击 Configure ,选择编译器,会弹出以下弹窗:

  • Specify the generator for this project 设置为你电脑上的 Visual Studio,我这里是 Visual Studio 17 2022
  • Optional platform for generator 设置为你的平台,我这里是 x64
  • 选项设置为 Use default native compilers

点击 Finish 后开始配置

在这里插入图片描述

在这里插入图片描述

配置 OPENCV_EXTRA_MODULES_PATH 为你的 opencv_contrib 下的 modules 目录路径,再次点击 Configure,直到所有部分变白。
在这里插入图片描述

在这里插入图片描述

Generate

点击 Generate 生成代码,在我的 build 目录下

在这里插入图片描述

生成项目

生成的项目在 build 目录下,点击 OpenCV.sln,使用 Visual Studio 打开

在这里插入图片描述

在这里插入图片描述

选择 debugrelease ,我这里选择 debug
在这里插入图片描述

点击 重新生成解决方案
在这里插入图片描述

编译完成后,提示 0 失败,如有失败,应排查错误

在这里插入图片描述
之后,点击 CMakeTargets 中的 INSTALL,右键 INSTALL 点击 仅用于项目,点击仅生成 INSTALL

在这里插入图片描述在这里插入图片描述

生成成功即可:

在这里插入图片描述

总结

本文介绍了如何在 Windows 系统下编译 OpenCV 和 OpenCV-contrib。希望本文能够帮助大家编译 OpenCV 和 OpenCV-contrib,更好地完成 OpenCV 的学习。

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

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

相关文章

gismo调试-组总刚

文章目录 前言一、1 组总刚main文件的断点2 跳转到gsElasticityAssembler.hpp3 gsElasticityAssembler.hpp的177行进入gsVisitorLinearElasticity.h4 进入gsAssembler.h重新进入gsVisitorLinearElasticity.h进入gsSparseSystem.h1.14 进入gsAssembler.h1.21.31.4 二、2.12.22.3…

Cracking C++(11): CMake代码高亮调研

文章目录 1. 目的2. VSCode 插件CMake 和 CMake ToolsCMake Language SupportCMake Highlights 3. JetBrains 系列3.1 CLion3.2 Fleet 4. Kate5. Sublime Text6. 总结 1. 目的 CMake 已经是开源 C 项目的主流 building system, 这里简单调研关注的编辑器 / IDE 下&…

Jetson nano 进阶教程4_通过IIC输出PWM

Jetson nano 进阶教程4_通过IIC输出PWM Jetson nano的40PIN不能直接发出PWM波,在很多控制舵机,电机调速方面很不方便,因此利用一块PCA9685模块,通过I2C总线控制PCA9685输出pwm波,并且可以调整占空比。 How do I use P…

Android Activity启动过程详解

目录 一,背景介绍 二,Activity启动过程 2.1 调用 ATMS 系统进程 2.1.1 时序图 2.1.2 Launcher 桌面的 App 图标入口 2.1.3 startActivitySafely() 方法 2.1.4 execStartActivity() 方法 2.2 ATMS 向 AMS 发送创建应用进程的过程 2.2.1 时序图 …

03- 流程控制(C语言)

一 概述 C语言支持三种程序运行结构:顺序结构、选择结构、循环结构。 顺序结构:按照语句编写的顺序 上到下逐句执行。选择结构:也叫 分支结构,依据是否满足条件,有选择的执行相应功能。循环结构:依据条件…

动态字符串SDS

基本概括 Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 但Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题(C语言中实际上没有字符串,本质上是字符数…

面向对象的封装

9. 面向对象特征一:封装性(encapsulation) 什么是封装 就像快递一样我们在网上买的物品,快递都会给我们添加外包装,给我们封装起来,这就是封装 客观世界里每一个事物的内部信息都隐藏在其内部,外界无法直接操作和修改…

怎样才算一个计算机知识体系完整的毕业生

为什么突然想写这个话题呢? 最近有不少新关注的读者,在后台问:大学学 Java 和 C 哪个好找工作,学前端好还是后端好,该学 Vue 还是 React。。。 仿佛看到了自己当年的模样,所以觉得有必要单独写一篇文章&a…

CSS基础学习--8 盒子模型(Box Model)

一、介绍 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实…

调用阿里API实现图片中的文字识别

作者介绍 王雪玉,女,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件:2239580540qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生&#xf…

网规例题(二)

解题思路: 1.发送150000字节大小IP报文 数据帧长1518字节 首部18字节 可用数据1500字节 因此需要发送 100个数据帧 1518字节 1518*8 bit 带宽10 Mb/s 10 000 000 bps (一)发送100个数据帧的发送时延 0.12144 秒 (二&#…

Java程序员不得不知道的一些设计模式

1、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢…

【arXiv2303】Learning with Explicit Shape Priors for Medical Image Segmentation

Learning with Explicit Shape Priors for Medical Image Segmentation, aXiv2303 解读:SPM: 一种即插即用的形状先验模块,可轻松嵌入任意编解码架构,助力涨点并显著改善分割效果! (qq.com) 论文:https://arxiv.org/…

基于Air103的DAP-link的硬件介绍

原文及固件链接 视频介绍链接 xkb7070-z 自锁式按键 上电开关 WAFER-SH1.0-6PWB 1.0间距卧贴插座 下载及通信接口 A2-4PA-2.54DS 4Pin接插件 纯下载接口 Air32F103CBT6 lqfp48 216MHz 256K Flash 32K RAM UD/UD- DP&DM信号 USB的差信号 R1 DIO监听 限流 PM254-2-04-W…

【3DsMAX】从零开始建房(7)

目录 1. 制作屋顶小船剩余部分 2. 制作小广告牌 1. 制作屋顶小船剩余部分 新建一个平面 长度分段设置为1 转换成可编辑多边形后,对边进行缩放 同样的方法再添加一个平面 添加“壳” 新建一个圆柱体作为桅杆 选中圆柱的底面,点击插入 挤出 将顶部的点缩…

深入理解深度学习——Transformer:编码器(Encoder)部分

分类目录:《深入理解深度学习》总目录 Transformer中的编码器不止一个,而是由一组 N N N个编码器串联而成。一个编码器的输出作为下一个编码器的输入。在下图中有 N N N个编码器,每一个编码器都从下方接收数据,再输出给上方。以此…

7年测试经验之谈,什么是模糊测试?

背景:近年来,随着信息技术的发展,各种新型自动化测试技术如雨后春笋般出现。其中,模糊测试(fuzz testing)技术开始受到行业关注,它尤其适用于发现未知的、隐蔽性较强的底层缺陷。这里&#xff0…

类的多继承的派生类的虚表的一些问题

虚表保存的其实并不是虚函数的地址,而是他的到jmp地址。 上我们的操作代码 class A { public:virtual void func1(){}virtual void func2(){}int a 1; };class B { public:virtual void func1(){}virtual void func2(){}int b 2; };class C : public A, public …

SAP HANA内存

用着用着HANA 数据库就慢了,原因都出在内存。 内存不足无非几个原因: 1.你的机器物理内存不足,这个好办,花钱扩。 2.你的HANA License容量不足,这个也好办,申请更大容量的内存License 3.你机器分配给HAN…

爬虫案例-使用Session登录指定网站(JS逆向AES-CBC加密+MD5加密)

总体概览:使用Session登录该网站,其中包括对password参数进行js逆向破解 (涉及加密:md5加密AES-CBC加密) 难度:两颗星 目标网址:aHR0cHM6Ly93d3cuZnhiYW9nYW8uY29tLw 下面文章将分为四个部分…