OpenCV功能特性和依赖关系

有许多可选的依赖项和功能可以打开或关闭。 CMake 具有特殊选项,允许打印所有可用的配置参数:

cmake -LH ../opencv

选项命名约定

有三种选项用于控制库的依赖项,它们具有不同的前缀:

  • 以启用或禁用依赖项开头的选项WITH_

  • 从启用或禁用构建和使用与 OpenCV 捆绑在一起的第三方库开始的选项BUILD_

  • 以 开头的选项表示已启用依赖项,如果无法使用自动检测,则可用于手动启用依赖项。HAVE_

启用选项时:WITH_

  • 如果启用选项,将构建并启用第三方库 => 设置为BUILD_``HAVE_``ON

  • 如果禁用选项,则将检测到并启用第三方库(如果找到 => 设置为“如果找到依赖项”BUILD_``HAVE_``ON

异构计算

CUDA 支持

WITH_CUDA(默认:OFF)

许多算法已经使用 CUDA 加速实现,这些函数位于单独的模块中。CUDA 工具包必须从官方 NVIDIA 站点安装,作为先决条件。对于早于 3.9 的 cmake 版本,OpenCV 使用自己的脚本,对于较新的版本 - 与 CMake 打包的脚本。其他选项可用于控制构建过程,例如 或。这些参数尚未记录,详情请查阅脚本。cmake/FindCUDA.cmake``CUDA_GENERATION``CUDA_ARCH_BIN``cmake/OpenCVDetectCUDA.cmake

  • 注意

    从 OpenCV 4.0 版开始,所有 CUDA 加速算法实现都已移至 opencv_contrib 存储库。要同时构建 opencvopencv_contrib,请选中使用额外模块构建。

    可以在相应的部分找到一些教程: GPU 加速计算机视觉(cuda 模块)

  • 另请参阅

    CUDA 加速计算机视觉

    https://en.wikipedia.org/wiki/CUDA

TODO:其他选项:、、?WITH_CUFFT``WITH_CUBLAS``WITH_NVCUVID

OpenCL 支持

WITH_OPENCL(默认值:ON)

多种 OpenCL 加速算法可通过所谓的“透明 API (T-API)”获得。此集成在用户级别使用与常规 CPU 实现相同的功能。如果输入和输出图像参数作为不透明的 cv::UMat 对象传递,则切换到 OpenCL 执行分支。更多信息可以在简要介绍和 OpenCL 支持中找到

在生成时,此功能没有任何先决条件。在运行时,需要一个有效的 OpenCL 运行时,以检查它的运行和/或命令。OpenCL 集成的某些参数可以使用环境变量进行修改,例如 .但是,目前还没有关于此功能的完整文档,因此请查看文件中的源代码以获取详细信息。clinfo``opencv_version --opencl``OPENCV_OPENCL_DEVICE``modules/core/src/ocl.cpp

  • 另请参阅

    https://en.wikipedia.org/wiki/OpenCL

TODO:其他选项:、、、、WITH_OPENCL_SVM``WITH_OPENCLAMDFFT``WITH_OPENCLAMDBLAS``WITH_OPENCL_D3D11_NV``WITH_VA_INTEL

图像读写(imgcodecs 模块)

内置格式

OpenCV 可以在没有任何第三方库帮助的情况下读取以下格式:

  • BMP的

  • 高动态范围 (WITH_IMGCODEC_HDR)

  • 太阳栅格 (WITH_IMGCODEC_SUNRASTER)

  • PPM、PGM、PBM、PFM(、WITH_IMGCODEC_PXM``WITH_IMGCODEC_PFM)

PNG、JPEG、TIFF、WEBP 支持
格式选择违约强制构建自己
巴布亚新几内亚WITH_PNGBUILD_PNG
JPEG格式WITH_JPEGBUILD_JPEG
TIFF格式WITH_TIFFBUILD_TIFF
网络WITH_WEBPBUILD_WEBP
使用 OpenJPEG 进行JPEG2000WITH_OPENJPEGBUILD_OPENJPEG
与 JasPer JPEG2000WITH_JASPER(见注释)BUILD_JASPER
EXR的WITH_OPENEXRBUILD_OPENEXR

读取这些格式的图像所需的所有库都包含在 OpenCV 中,如果在配置阶段找不到,将自动构建。相应的选项将强制构建和使用自己的库,它们在某些平台上默认启用,例如 Windows。BUILD_*

  • 注意

    OpenJPEG 的优先级高于已弃用的 JasPer。为了使用 JasPer,必须禁用 OpenJPEG。

GDAL集成

WITH_GDAL(默认:OFF)

GDAL 是一个更高级别的库,支持读取多种文件格式,包括 PNG、JPEG 和 TIFF。打开文件时,它将具有更高的优先级,并且可以覆盖其他后端。该库将使用 cmake 包机制进行搜索,确保安装正确或手动设置环境或 cmake 变量。GDAL_DIR

GDCM集成

WITH_GDCM(默认:OFF)

通过 GDCM 库启用 DICOM 医学图像格式支持。该库将使用 cmake 包机制进行搜索,确保安装正确或手动设置环境或 cmake 变量。GDCM_DIR

视频读写(videoio模块)

TODO:videoio的工作原理,注册表,优先级

Video4Linux的

WITH_V4L(Linux;默认值:ON )

使用 Video4Linux API 从相机捕获图像。必须安装 Linux 内核头文件。

FFmpeg的

WITH_FFMPEG(默认值:ON)

与 FFmpeg 库集成,用于解码和编码视频文件和网络流。该库可以读取和写入许多流行的视频格式。它由几个组件组成,这些组件必须作为构建的先决条件进行安装:

  • AVCODEC解码器

  • AVVonfig

  • 阿武蒂尔

  • 斯瓦斯卡

  • avresample(可选)

例外情况是 Windows 平台,其中包含 FFmpeg 的预构建插件库将在配置阶段下载并复制到包含所有生成库的文件夹中。bin

  • 注意

    可以使用 Libav 库代替 FFmpeg,但这种组合不受积极支持。

GStreamer(GS特雷默)

WITH_GSTREAMER(默认值:ON)

实现与 GStreamer 库的集成,用于解码和编码视频文件,从摄像机和网络流中捕获帧。可以安装许多插件来扩展支持的格式列表。OpenCV 允许运行任意 GStreamer 管道,这些管道作为字符串传递给 cv::VideoCapture 和 cv::VideoWriter 对象。

各种 GStreamer 插件在不同平台上提供硬件加速的视频处理。

Microsoft 媒体基金会

WITH_MSMF(Windows;默认值:ON)

启用使用 Windows 内置媒体基础框架的 MSMF 后端。可用于从相机捕获帧,解码和编码视频文件。此后端具有硬件加速处理支持(选项,默认为 ON)。WITH_MSMF_DXVA

  • 注意

    旧版本的 Windows(10 之前的版本)可能具有不兼容的 Media Foundation 版本,并且已知从 OpenCV 使用时会出现问题。

DirectShow(直接显示)

WITH_DSHOW(Windows;默认值:ON)

此后端使用较旧的DirectShow框架。它只能用于从相机捕获帧。它现在已被弃用,取而代之的是 MSMF 后端,尽管两者都可以在同一版本中启用。

AV发布

WITH_AVFOUNDATION(Apple;默认值:ON)

AVFoundation 框架是 Apple 平台的一部分,可用于从相机捕获帧、编码和解码视频文件。

其他后端

有多个不太流行的框架可用于读取和写入视频。每个都需要安装相应的库或 SDK。

选择违约描述
WITH_1394使用 DC1394 库的 IIDC IEEE1394支持
WITH_OPENNI关闭OpenNI 可用于 从 深度 感应 相机 采集 数据。荒废的。
WITH_OPENNI2关闭OpenNI2 可用于从深度感应相机捕获数据。
WITH_PVAPI关闭PVAPI 是用于 Prosilica GigE 相机的旧版 SDK。荒废的。
WITH_ARAVIS关闭Aravis 库用于使用 Genicam 相机进行视频采集。
WITH_XIMEA关闭XIMEA 相机支持。
WITH_XINE关闭XINE 库支持。
WITH_LIBREALSENSE关闭RealSense 摄像头支持。
WITH_MFX关闭MediaSDK 库可用于原始视频流的硬件加速解码和编码。
WITH_GPHOTO2关闭GPhoto 库可用于从相机获取帧。
WITH_ANDROID_MEDIANDKMediaNDK 库自 API 级别 21 起在 Android 上可用。
VideoIO插件

从 4.1.0 版本开始,一些 videoio 后端可以构建为插件,从而打破了对第三方库的严格依赖,并在运行时使它们成为可选的。可以使用以下选项来控制此机制:

选择违约描述
VIDEOIO_ENABLE_PLUGINS完全启用或禁用插件。
VIDEOIO_PLUGIN_LIST以逗号或分号分隔的要编译为插件的后端名称列表。支持的名称包括 ffmpeggstreamermsmfmfxall

 在线教程

  • 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
  • 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
  • EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
  • 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
  • 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
  • 机器学习 – 有指导和无指导情况下的基本机器学习算法
  • 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
  • 斯坦福统计学习

请添加图片描述

人工智能书籍

  • OpenCV(中文版).(布拉德斯基等)
  • OpenCV+3计算机视觉++Python语言实现+第二版
  • OpenCV3编程入门 毛星云编著
  • 数字图像处理_第三版
  • 人工智能:一种现代的方法
  • 深度学习面试宝典
  • 深度学习之PyTorch物体检测实战
  • 吴恩达DeepLearning.ai中文版笔记
  • 计算机视觉中的多视图几何
  • PyTorch-官方推荐教程-英文版
  • 《神经网络与深度学习》(邱锡鹏-20191121)

  • 在这里插入图片描述

第一阶段:零基础入门(3-6个月)

新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。

第二阶段:基础进阶(3-6个月)

熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。

第三阶段:工作应用

这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。

在这里插入图片描述

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

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

相关文章

输入框限制输入两位小数 输入金额限制 双向绑定输入框能继续输入但是变量的数据不变解决方案 input 保留两位小数

移动端项目 需求是 输入框只能输入1000以内的数字保留两位小数 开发中发现 用vue开发双向绑定 不管是用value还是v-model 在输入时用input监听输入框变化 校验是否匹配 当不匹配是修改绑定的变量 inputValue时 打印inputValue符合预期 但是input输入框中还是原来输入的值 没有…

RocketMQ源码阅读-八-定时消息和消息重试

RocketMQ源码阅读-八-定时消息和消息重试 定时消息概念逻辑流程图延迟级别Producer发送定时消息Broker存储定时消息Broker发送定时消息Broker 持久化定时发送进度 消息重试总结 定时消息 概念 官网给出的概念:https://rocketmq.apache.org/zh/docs/featureBehavior…

树莓派无显示屏连接

终端命令控制树莓派关机 1:用网线连接树莓派 按照正常的步骤 ,搜索控制面板,网络和internet,网络和共享中心,更改适配器设置,右键WIFI,点击属性,点击共享,打勾允许即可&…

redis排序

文章目录 简介SORT命令的实现ALPHA选项的实现ASC和DESCBYLIMITGET命令 类似映射STORE选项的实现多个命令的执行顺序 简介 Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。 SORT命令的实现 服务器执行SORT numbers 命令的详细步骤如下: 1&#…

超分之ESRGAN

Esrgan:增强型超分辨率生成对抗网络。Esrgan: Enhanced super-resolution generative adversarial networks.In: ECCVW. (2018)Xintao Wang, Ke Yu, Shixiang Wu, Jinjin Gu, Yihao Liu,Chao Dong, Yu Qiao, and Chen Change Loy. 文章目录 摘要一、引言二、相关工作…

科大讯飞 再次引爆Ai

去年「科大讯飞版ChatGPT」星火大模型刚上线的时候,小编给大家推荐过一波,演示了其强大的功能,不少小伙伴都立马申请体验了一把,有小伙伴还私信我说功能非常强大,工作效率提高不少,支持国产大模型之类赞扬。…

西安石油大学C++上机实验汇总

考试题难度就像第三章第五章课后题的难度 基础知识一定要掌握!!! 上机一:类与对象程序设计(2 学时) 上机目的 掌握声明类的方法。掌握类和类的成员的概念以及定义对象的方法。掌握构造函数和析构函数的…

elementplus 中 DatePicker 日期选择器样式修改无效

问题 遇到一个需求需要修改 DatePicker 日期选择器的样式,在添加了 scoped 属性的 style 标签,并且使用了 deep 样式穿透的情况下并不能修改其样式。 原因 DatePicker 日期选择器弹出面板默认挂载在 body 上,所以在组件中添加了 scoped 属…

Java日期和时间学习记录2

1、Java的LocalDate类当前时间往未来几天和过去时间几天 import java.time.LocalDate;public class Main {public static void main(String[] args) {// 获取当前日期LocalDate currentDate LocalDate.now();System.out.println("当前日期:" currentDa…

【Fooocus 深度学习】SDXL,AIGC生图,源码解读

文章目录 使用通配符增加prompt多样性Fooocus的风格实现 使用通配符增加prompt多样性 prompt和negative_prompt都可以通过apply_wildcards函数来实现通配符替换,apply_wildcards会从txt中随机找一个出来。 promptsunshine, river, trees, __artist__ task_prompt …

vue2、vue3,生命周期详解

一、Vue2.x Vue2的生命周期 是指Vue实例从创建到销毁的整个过程中,会经历一系列的阶段和回调函数。它分为8个阶段,包括了组件的创建、挂载、更新和销毁等过程。 1、beforeCreate: 在实例初始化之后,但在数据观测和事件配置之前被调用。此…

使用ffmpeg转换索尼老DV拍摄的VOB文件为mp4

一些背景故事 最近对象想用 CCD 拍照录像,家里刚好有一台快 20 年前的索尼 DV DCR-DVD653E,就是电池老化充不进去电了。 翻出来之后还感慨了一下:当年没有网购,价格不透明;有些地方也没有官方店,只有一两家…

Linux笔记之bash脚本中的-e、和

Linux笔记之bash脚本中的-e、&和&& code review! 文章目录 Linux笔记之bash脚本中的-e、&和&&1.&和&&2.-e 1.&和&& 在Linux bash脚本中,&符号有几个不同的用途,这里列举了一些常见的情况&#xf…

js中的内置对象、数学对象、日期对象、数组对象、字符串对象

js中的对象(三种): 自定义对象 car、computer DOM对象 div、p BOM对象 window、console 内置对象 数学对象 Math (object类型) 1、圆周率 Math.PI 2、向下取整(返回值) Math.floor() 3、向上取整(返回值) M…

年少不知 Base 好,错把总包当成宝。。

今天聊一个很现实的话题:选 offer 对比薪资时,我强烈建议以 Base 为主,而不是总包。 为什么?且听鱼皮娓娓道来。 注意,以下为个人观点,仅供参考! 首先明确 Base 和总包的概念: Base&…

某马头条——day11+day12

实时计算和定时计算 流式计算 kafkaStream 入门案例 导入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusions><exclusion><artifactId>connect-json</artifactId&…

美,英,法,德、意大利和西班牙的geojson,以及区域json

美&#xff0c;英&#xff0c;法&#xff0c;德、意大利和西班牙的geojson文件 json地址 https://pan.baidu.com/s/1nio1bV_j-jAEVqgEHXWsNw?pwdqwer#list/path/GEOJSON 感谢大佬提供的 大佬连接 大佬的知乎原地址 国内geojson获取工具地址 http://da![在这里插入图片描述](h…

【江科大】STM32:I2C通信外设(硬件)

在将2C通信外设之前&#xff0c;我们先捋一捋&#xff0c;串口的相关特点来和I2C进行一个对北比。 首先&#xff1a; 1,大部分单片机&#xff0c;设计的PCB板均带有串口通信的引脚&#xff08;也就是通信基本都借助硬件收发器来实现&#xff09; 2.对于串口的异步时序&#xff…

韩国访问学者申请注意事项

随着国际交流的增加&#xff0c;韩国成为许多学者追求学术深造的热门目的地之一。如果你计划成为一名韩国访问学者&#xff0c;以下是知识人网小编整理的一些需要注意的事项&#xff0c;以确保你的申请顺利进行。 1.详细了解目标学府&#xff1a;在开始申请之前&#xff0c;仔细…

Python进阶——文件及IO操作

一、文件的基本操作 创建文件对象和打开文件对象&#xff1a;open() def my_write():#(1)打开&#xff08;创建&#xff09;文件fileopen(Myqq.txt,w,encodingutf-8) #如果文件不存在&#xff0c;则在当前目录下创建一个文件名字为Myqq.txt#&#xff08;2&#xff09;操作文件f…