OpenCV安装概述

预构建版本

在许多情况下,您可以找到满足您需求的 OpenCV 预构建版本。

OpenCV 核心团队的软件包

每个版本都会发布使用默认参数和最新编译器构建的适用于 Android、iOS 和 Windows 的包,它们不包含opencv_contrib模块。

  • GitHub 版本:Releases · opencv/opencv · GitHub

  • SourceForge.net: OpenCV - Browse Files at SourceForge.net

第三方软件包

其他组织和个人维护自己的 OpenCV 二进制发行版。例如:

  • 常用 Linux 发行版中的系统软件包 (https://pkgs.org/search/?q=opencv)

  • PyPI (Search results · PyPI)

  • 康达 (Search :: Anaconda.org)

  • 柯南 (https://github.com/conan-community/conan-opencv)

  • vcpkg (https://github.com/microsoft/vcpkg/tree/master/ports/opencv)

  • NuGet (NuGet Gallery | Packages matching opencv)

  • 冲泡 (opencv — Homebrew Formulae)

  • Maven (Maven Central Repository Search)

从源代码构建

现有的二进制包可能不适用于您的用例,那么您必须自己构建 OpenCV 的自定义版本。本部分简要概述了构建过程,请查看特定平台的教程以获取实际的构建说明。

OpenCV 使用 CMake 构建管理系统进行配置和构建,因此本节主要介绍使用 CMake 构建软件的一般过程。

步骤 0:先决条件

安装 C++ 编译器和生成工具。在 *NIX 平台上,它通常是 GCC/G++ 或 Clang 编译器和 Make 或 Ninja 构建工具。在 Windows 上,它可以是 Visual Studio IDE 或 MinGW-w64 编译器。Android NDK 中提供了适用于 Android 的原生工具链。XCode IDE 用于为 OSX 和 iOS 平台构建软件。

从官方网站或其他来源安装 CMake。

获取其他第三方依赖项:具有额外功能(如解码视频或显示 GUI 元素)的库;提供所选算法优化实现的库;用于文档生成和其他附加功能的工具。查看 OpenCV 配置选项参考,了解可用选项和相应的依赖项。

第 1 步:获取软件源

典型的软件项目由一个或多个代码存储库组成。OpenCV 有两个包含代码的存储库:opencv - 具有稳定且积极支持的算法的主存储库,以及包含实验性和非自由(专利)算法的 opencv_contrib;以及一个包含测试数据的存储库:opencv_extra

您可以以存档的形式下载存储库的快照,也可以使用完整历史记录克隆存储库。

要下载快照存档:

  • 转到 Releases · opencv/opencv · GitHub 并从任何版本下载“源代码”存档。

  • (可选)转到 Releases · opencv/opencv_contrib · GitHub 并下载与 opencv 相同的版本的“源代码”存档

  • (可选)转到 Releases · opencv/opencv_extra · GitHub 并下载与 opencv 相同版本的“源代码”存档

  • 将所有存档解压缩到某个位置

要克隆存储库,请在控制台中运行以下命令(必须安装 git):

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

git -C opencv 签出<some-tag>

# 可选

git clone GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules

git -C opencv_contrib checkout <same-tag-as-opencv>

# 可选

git clone GitHub - opencv/opencv_extra: OpenCV extra data

git -C opencv_extra checkout <same-tag-as-opencv>

  • 注意

    如果要使用多个存储库构建软件,请确保所有组件彼此兼容。对于 OpenCV,这意味着 opencvopencv_contrib 存储库必须在同一标记下签出,或者所有快照存档都从同一版本下载。

    在选择要下载的版本时,请考虑您的目标平台和开发工具版本,最新版本的 OpenCV 可能会在非常旧的编译器中出现构建问题,反之亦然。我们建议使用最新版本和新的操作系统/编译器组合。

第 2 步:配置

在此步骤中,CMake 将验证所有必要的工具和依赖项是否可用且与库兼容,并将为所选生成系统生成中间文件。它可以是 Makefile、IDE 项目和解决方案等。通常,此步骤在新创建的构建目录中执行:

cmake -G<generator> <configuration-options> <source-directory>

  • 注意

    cmake-gui应用程序允许使用图形用户界面查看和修改可用选项。有关详细信息,请参阅 Resources。

第 3 步:构建

在构建过程中,源文件被编译为目标文件,这些文件链接在一起或以其他方式组合到库和应用程序中。可以使用通用命令运行此步骤:

cmake --build <build-directory> <build-options>

...或者可以直接调用底层构建系统:

(可选)第 3 步:安装

在安装过程中,构建过程中,构建目录中的构建结果和其他文件将被复制到安装位置。默认安装位置在 UNIX 和 Windows 上。可以在配置步骤中通过设置选项更改此位置。若要执行安装,请运行以下命令:/usr/local``C:/Program Files``CMAKE_INSTALL_PREFIX

cmake --build <build-directory> --target install <other-options>

  • 注意

    此步骤是可选的,OpenCV 可以直接从构建目录使用。

    如果安装根目录是受保护的系统目录,则必须使用超级用户或管理员权限(例如 )。sudo cmake ...

(可选)第 4 步:构建插件

通过将部分代码提取到动态加载的插件中,可以解耦一些 OpenCV 依赖项并使其成为可选的。它有助于生成自适应二进制发行版,这些发行版可以在依赖性较低的系统上运行,并且只需安装缺少的库即可扩展功能。目前,模块 corevideoiohighgui 的一些依赖项都支持这种机制。在某些情况下,可以通过设置诸如 或 之类的选项来与 OpenCV 一起构建插件,可以在 OpenCV 配置选项参考中找到与此场景相关的更多选项。在其他情况下,插件应该在它们自己的构建过程中单独构建,本节描述了这种独立的构建过程。VIDEOIO_PLUGIN_LIST``HIGHGUI_PLUGIN_LIST

  • 注意

    建议使用与 OpenCV 构建兼容的编译器、配置和构建选项,否则生成的库可能会拒绝加载或导致其他运行时问题。请注意,由于 OpenCV 和相应的第三方库之间存在额外的障碍,当动态加载后端时,某些功能可能会受到限制或工作速度变慢。

构建过程类似于主 OpenCV 构建,但您必须使用位于相应子目录中的特殊 CMake 项目,这些文件夹还可以包含引用脚本和 Docker 镜像。为插件使用名称前缀非常重要,以便加载器能够找到它们。每个受支持的前缀只能用于加载一个库,但是可以为单个前缀探测多个候选库。例如,您可以拥有 libopencv_videoio_ffmpeg_3.solibopencv_videoio_ffmpeg_4.so 插件,第一个可以成功加载的插件将占用内部插槽并停止探测过程。下表列出了可能的前缀和项目位置:opencv_<module>_<backend>

模块后端位置
核心parallel_tbb、parallel_onetbb parallel_openmpopencv/模块/核心/杂项/插件
高桂GTK、GTK2、GTK3opencv/modules/highgui/misc/插件
视频IOffmpeg、gstreamer、intel_mfx、msmfopencv/模块/videoio/misc

例:

# TBB 检测的设置环境,例如:

# 导出 TBB_DIR=<dir-with-tbb-cmake-config>

cmake -G<generator> \

-DOPENCV_PLUGIN_NAME=opencv_core_tbb_<后缀> \

-DOPENCV_PLUGIN_DESTINATION=<目标文件夹> \

-DCMAKE_BUILD_TYPE=<配置> \

<opencv>/modules/core/misc/plugins/parallel_tbb

cmake --构建。--config <配置>

  • 注意

    在 Windows 上,插件必须与现有的 OpenCV 版本链接。将 environment 或 CMake 变量设置为包含 OpenCVConfig.cmake 文件的目录,它可以是 OpenCV 构建目录或您执行安装的位置中的某个路径。

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

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

相关文章

【netstat】

netstat netstat Proto是协议&#xff0c;TCP、UDP Recv-Q表示网络接收队列 Send-Q表示网络发送队列&#xff0c;没有ack的数据 Local Address本地ip地址和端口 Foreign Address服务器的ip和端口 State连接状态 State的种类&#xff1a; Established-活跃的连接 Listen-等待连…

软件测试|Python中的变量与关键字详解

简介 在Python编程中&#xff0c;变量和关键字是非常重要的概念。它们是构建和控制程序的基本要素。本文将深入介绍Python中的变量和关键字&#xff0c;包括它们的定义、使用方法以及一些常见注意事项。 变量 变量的定义 变量是用于存储数据值的名称。在Python中&#xff0…

听GPT 讲Rust源代码--compiler(12)

File: rust/compiler/rustc_data_structures/src/graph/dominators/mod.rs 文件mod.rs位于Rust编译器源代码中的rustc_data_structures/src/graph/dominators目录下。这个文件的作用是实现支配树&#xff08;dominator tree&#xff09;的计算算法。 在编译器优化中&#xff0c…

谁动了我的注册表?免费的注册表对比分析工具

关于这款工具&#xff0c;可以在B站搜谁动了我的注册表&#xff0c;UP主名字为有限的未知。该注册表对比分析工具视频教程链接如下。谁动了我的注册表&#xff1f;注册表比对分析工具 & 手动实现右键菜单自由_哔哩哔哩_bilibili 声明&#xff1a;该款注册表分析软件&#…

Redis之集群方案比较

哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c;哨兵的配置略微复杂&#xff0c;并且性能和高可用性等各方面表现一般&a…

【UE Niagara学习笔记】03 - 火焰喷射效果

目录 效果 步骤 一、创建粒子系统 二、制作火焰动画 三、改为GPU粒子 四、循环播放粒子动画 五、火焰喷射效果雏形 六、火焰颜色 效果 步骤 一、创建粒子系统 1. 新建一个Niagara系统&#xff0c;选择模板 命名为“NS_Flame_Thrower”&#xff08;火焰喷射&#…

学完Python,不做程序员,只接兼职,哎,就是玩儿

现在这个时代&#xff0c;人人开始追求做斜杠青年&#xff0c;多方面开展副业&#xff0c;赚取几份工资。有很多朋友就抓住了Python的风口&#xff0c;靠着Python兼职月入一万。那么学完Python&#xff0c;有哪些可以做的兼职呢&#xff1f; 一、闲暇时间&#xff0c;接自由单…

【css】快速实现鼠标悬浮变色效果

<div class"nav-item"><div class"ic-img"></div><div>切换</div> </div>.nav-item {width: 100rem;height: 45rem;line-height: 45rem;display: flex;text-align: center;justify-content: center;align-items: cent…

Kafka内外网访问

文章目录 一、背景二、需求三、调研四、配置内外网访问 一、背景 kafka机器只有内网IP&#xff0c;没有绑定外网网卡&#xff0c;但是可以在防火墙或通过其他有公网IP的设备上进行公网IP端口的映射。 二、需求 kafka集群端口映射后&#xff0c;可以通过外网IP端口进行数据生…

uView 对象操作

注意 由于JS对象包括的范围非常广&#xff0c;加上ES6又有众多的新特性&#xff0c;很难、也没必要做到囊括所有的类型和情况&#xff0c;这里说的"对象"&#xff0c;指的是普通的对象&#xff0c;不包括修改对象原型链&#xff0c; 或者为"Function"&…

java每日一题——输出9x9乘法表(答案及编程思路)

前言&#xff1a; 打好基础&#xff0c;daydayup! 题目&#xff1a;输出下图9x9乘法表 编程思路&#xff1a;java只能输出行&#xff0c;不能输出列&#xff0c;所以考虑好每一行输出的内容即可 public class demo {public static void main(String[] args) {for (int i 1; i…

文档审阅批注的合并和对比

#创作灵感# 最近在改论文&#xff0c;Feedback返回的时候&#xff0c;把之前的批注都删了&#xff0c;这就增加了工作量&#xff0c;看起来不方便&#xff0c;所以就需要将删掉的批注全部复原。 那在原来的文档重新在修改一遍&#xff0c;工作量还是很大的&#xff0c;所以这里…

数字新生态:低代码开发的实践应用

低代码开发是一种快速构建软件应用程序的方法&#xff0c;极大地简化了传统编码的流程。本文将探讨数字新生态中低代码开发的实践应用&#xff0c;以及它如何推动业务创新和提高开发效率。 引言 随着信息技术的飞速发展&#xff0c;数字化转型已成为企业和组织的当务之急。但是…

两种方式实现mysql截取年月日

select date_format(now(), %Y-%m-%d) select substring(now(), 1, 10)

三剑客前端教程

前端教程 结构层&#xff08;html&#xff09;表现层&#xff08;css&#xff09;行为层&#xff08;javascript&#xff09; HTML 超文本标记语言&#xff09; HTML&#xff08;超文本标记语言——HyperText Markup Language&#xff09;是构成 Web 世界的一砖一瓦。它定义…

探索PyTorch优化和剪枝技术相关的api函数

torch.nn子模块Utilities解析 clip_grad_norm_ torch.nn.utils.clip_grad_norm_ 是 PyTorch 深度学习框架中的一个函数&#xff0c;它主要用于控制神经网络训练过程中的梯度爆炸问题。这个函数通过裁剪梯度的范数来防止梯度过大&#xff0c;有助于稳定训练过程。 用途 防止…

Dockerfile基本结构及编写详解

文章目录 1 Dockerfile1.1 Dockerfile的基本结构1.2 Dockerfile文件说明1.3 Dockerfile常见命令1.4 build命令1.5 部署微服务1.6 docker-compose部署 1 Dockerfile ​ Dockerfile其实就是我们用来构建Docker镜像的源码&#xff0c;当然这不是所谓的编程源码&#xff0c;而是一…

LeetCode 0447.回旋镖的数量:哈希表

【LetMeFly】447.回旋镖的数量&#xff1a;哈希表 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-boomerangs/ 给定平面上 n 对 互不相同 的点 points &#xff0c;其中 points[i] [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 &#xff0c;其中 i 和…

算法-大数相乘

解决算法; * 1. 模拟小学乘法&#xff1a;最简单的乘法竖式手算的累加型&#xff1b; * 2. 分治乘法&#xff1a;最简单的是Karatsuba乘法&#xff0c;一般化以后有Toom-Cook乘法&#xff1b; * 3. 快速傅里叶变换FFT&#xff1a;&#xff08;为了避免精度问题&#xff0c;可…

汽车雷达:实时SAR成像的实现

摘要: 众所周知,点云成像是目前实现汽车雷达感知最流行的方案,尤其是采用多级联实现的4D点云成像雷达,这是目前最有希望实现产品落地的技术方案之一。 今天重点分享关于汽车雷达SAR成像相关技术内容,这也证实了4D点云成像雷达并不一定就是汽车雷达成像唯一的方案,在业内…