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)
  • 柯南 (GitHub - conan-community/conan-opencv: [DEPRECATED] Conan recipes for 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 https://github.com/opencv/opencv_contrib
git -C opencv_contrib checkout <same-tag-as-opencv>
# 可选
git clone https://github.com/opencv/opencv_extra
git -C opencv_extra checkout <same-tag-as-opencv>

注意

如果要使用多个存储库构建软件,请确保所有组件彼此兼容。对于 OpenCV,这意味着 opencv 和 opencv_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/localC:/Program FilesCMAKE_INSTALL_PREFIX

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

注意

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

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

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

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

注意

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

构建过程类似于主 OpenCV 构建,但您必须使用位于相应子目录中的特殊 CMake 项目,这些文件夹还可以包含引用脚本和 Docker 镜像。为插件使用名称前缀非常重要,以便加载器能够找到它们。每个受支持的前缀只能用于加载一个库,但是可以为单个前缀探测多个候选库。例如,您可以拥有 libopencv_videoio_ffmpeg_3.so 和 libopencv_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/599136.shtml

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

相关文章

在Go语言中处理HTTP请求中的Cookie

在Web开发中&#xff0c;Cookie是一种常用的技术&#xff0c;用于在客户端存储数据&#xff0c;并在随后的请求中发送回服务器。Go语言的标准库提供了强大的支持来处理HTTP请求中的Cookie。 首先&#xff0c;让我们了解如何在Go语言中设置Cookie。以下是一个简单的示例&#x…

MySQL基础笔记(4)DQL数据查询语句

DQL用于查找数据库中存放的记录~ 目录 一.语法 二.基础查询 1.查询多个字段 2.设置别名 3.去除重复记录 三.条件查询 1.基础语法 2.常见条件 四.分组查询 1.聚合函数 2.语法 五.排序查询 六.分页查询 附注&#xff1a;DQL执行顺序 1.编写顺序 2.执行顺序 ​​​…

oracle数据库修改已使用过的序列当前值

--查询当前值 select seq_test.nextval from dual; ----修改序列为增加的步长为50 alter sequence seq_test increment by 50 nocache; ---获取调整后的下一个值 select seq_test.nextval from dual; ----修改序列为原来的规则 alter sequence seq_test increment b…

VLAN的基础知识

VLAN配置 - NetEngine 8000 M14K, M14, M8K, M8, M4, 8000E M14, M8 V800R022C10SPC500 配置指南 - 华为 VLAN介绍 定义 VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域&#xff08;多个VLAN&a…

安装阿里云CLI之配置阿里云凭证信息

有时候需要再主机上通过 OpenAPI 的调用访问阿里云&#xff0c;并完成控制&#xff0c;此时就需要在服务器上安装阿里云CLI&#xff0c;并完成账号的设置。 1. 登录阿里云创建账号 1.1 点击阿里云头像 ——》 控制访问 ——》创建一个拥有DNS权限的用户 这个用户不用太多权限…

如何在Rust中解析复杂的嵌套JSON结构?

在Rust中解析复杂的嵌套JSON结构可以使用serde_json库。通过serde_json::Value类型的递归遍历&#xff0c;可以轻松地解析和访问嵌套的JSON数据。以下是一个示例&#xff1a; use serde_json::{Value};fn parse_json(json: &Value) {match json {Value::Object(obj) > …

小程序购物商城搭建开发分析

小程序商城作为现代商业模式的重要组成部分&#xff0c;具有巨大的发展潜力和商业价值。通过搭建一个功能完善、用户友好的小程序商城&#xff0c;您将能够提供便捷的购物体验&#xff0c;吸引更多的用户并实现商业增长。在进行小程序商城开发搭建之前&#xff0c;我们需要对项…

抽象工厂模式(Abstract Factory)

文章目录 定义与类型适用场景优点缺点产品等级结构与产品族抽象工厂代码示例 定义与类型 定义&#xff1a;抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口&#xff0c;无须指定它们具体的类。 类型&#xff1a;创建型。 适用场景 客户端&#xff08;应用层&#…

cocos creator人开发小游戏免费素材资源

1、首先熟悉官方的手册和api文档&#xff0c;文档还是比较详细&#xff0c;游戏的方方面面都涉及到了 官方手册&#xff1a; http://docs.cocos.com/creator/manual/zh/官方api文档&#xff1a; http://docs.cocos.com/creator/api/zh/官方论坛&#xff1a; https://forum.coco…

AI提示工程指南

简述: 当今互联网行业对于AI提示工程的需求日益增长,而《AI提示工程指南》是一本旨在满足这种需求的宝贵指南。本指南由一位对AI提示工程充满热情并自学而来的互联网从业者撰写,旨在为行业人员提供一个全面、易懂的参考手册。 这本指南将引领您踏上AI提示工程的旅程,深入探…

Python数据处理 ——展现Pandas 的强大

一、简介 Pandas是一个基于NumPy的分析结构化数据的工具集&#xff0c;NumPy为其提供了高性能的数据处理能力。Pandas被普遍用于数据挖掘和数据分析&#xff0c;同时也提供数据清洗、数据I/O、数据可视化等辅助功能。Pandas不仅简洁&#xff0c;还拥有出众的数据处理能力和完备…

DevOps(3)

目录 11.描述root账户&#xff1f; 12.如何在发出命令时打开命令提示符&#xff1f; 14.Linux系统下交换分区的典型大小是多少&#xff1f; 15.什么是符号链接&#xff1f; 11.描述root账户&#xff1f; root账户就像一个系统管理员账户&#xff0c;允许你完全控制系统。 …

经常戴耳机有什么危害呢?一文读懂长时间使用耳机都有哪些危害

经常佩戴耳机可能会出现滋生细菌、引起炎症反应、损伤听力等危害。 1、滋生细菌&#xff1a;长时间戴耳机&#xff0c;会导致耳道堵塞&#xff0c;从而导致耳内潮湿&#xff0c;容易滋生细菌。 2、引起炎症反应&#xff1a;长时间戴耳机&#xff0c;会对耳道口造成机械性的压…

多线程和JVM

一&#xff0c;多线程实现的四种方式 1. 实现Runnable接口 普通实现&#xff1a; public class MyRunnable implements Runnable {Overridepublic void run() {System.out.println("线程执行中...");} }public class Main {public static void main(String[] arg…

采用intellij idea作为IDE的java项目由于*.iml文件导致无法编译问题

将项目中所有的iml文件删除&#xff0c;然后idea重新打开项目、编译&#xff0c;问题解决。 从git上将spring boot项目下载&#xff0c;用intellij idea打开&#xff0c;结果无法编译&#xff0c;提示“程序包com.fasterxml.jackson.core不存在”。编译来编译去&#xff0c;又…

口语化描述Maven的依赖范围(scope),简略不详细

文章目录 一、compile&#xff08;默认范围&#xff09;二、test&#xff08;用于测试&#xff09;三、provide四、import&#xff08;用来管理依赖版本&#xff09;五、system六、runtime版本仲裁 一、compile&#xff08;默认范围&#xff09; 范围最大哪里都能用 二、test…

vmware workstation的三种网络模式通俗理解

一、前言 workstations想必很多童鞋都在用&#xff0c;经常会用来在本机创建不同的虚拟机来做各种测试&#xff0c;那么对于它支持的网络模式&#xff0c;在不同的测试场景下应该用哪种网络模式&#xff0c;你需要做下了解&#xff0c;以便可以愉快的继续测&#xff08;搬&…

全年重磅!《2023年度TikTok电商行业趋势白皮书》发布!

2023年&#xff0c;似乎所有的东西都往相反的方向发展。疫情消退后经济没有明朗&#xff0c;局部冲突愈演愈烈没有消停&#xff0c;打工人辛苦工作工资没有涨&#xff0c;疯狂买买买的双十一也开始变得冷清... 似乎是不友好的一年&#xff0c;那你有听到“增长的声音”吗&…

uniCloud 云函数

相对于云函数&#xff0c;官方更推荐使用 云对象 新建云函数 编辑云函数 uniCloud-aliyun/cloudfunctions/hello_func/index.js use strict; exports.main async (event, context) > {let {name} eventreturn 你好&#xff0c;${name}! };云函数接收的参数从event中解构获…

ARM+FPGA多通道信号采集与处理模块开发方案

多通道信号采集与处理模块开发方案 开发一套多通道光电信号采集与处理模块&#xff0c;实现对64通道传感信号采集、处理与存储功能。主要包括数据采集与处理电路&#xff0c;系统控制软件&#xff0c;信号处理算法实现及数据存储。其中包括8通道ADC&#xff0c;每一路ADC采样数…