OpenCV 官方文档的组织结构

OpenCV (开源计算机视觉库:http://opencv.org) 是一个开源库,它包含了几百个计算机视觉算法。学习 OpenCV 库最权威的资料无疑就是 OpenCV 的官方文档了。

OpenCV 官方提供的文档比较齐全,这些文档主要有两种形式,一是教程,就像书或文章一样,会以 OpenCV 的某个模块或接口为主题,较为详细地说明基本原理,OpenCV 的 API 用法,并提供示例代码和说明;二是 API 参考,会逐个类逐个函数接口的进行说明。要学习 OpenCV,教程形式的官方文档无疑是最好的选择;但日常开发中,一时想不起来某个函数接口的签名及语义,想不起来某个类有哪些函数接口,则翻找 API 参考形式的官方文档更好。

这里梳理一下 OpenCV 官方文档的组织结构,让我们可以对 OpenCV 提供了什么有一个大概的了解,同时又能为我们队 OpenCV 的学习提供一个路线图。

在 OpenCV 官方网站中,库的 Releases 页面 列出了 OpenCV 各个版本的一些关键信息,如源码的下载链接,对应版本的 GitHub 链接,不同操作系统平台的二进制安装包下载链接等,当然也包括文档入口的链接。

这里以当前最新的发行版 4.5.5 为例,看一下OpenCV 官方文档的组织结构。

OpenCV 4.5.5 版文档的入口页面位于 https://docs.opencv.org/4.5.5/,这个页面的组织如下:

OpenCV 官方文档的组成包括一份介绍文档(介绍),4 个教程(OpenCV 教程OpenCV-Python 教程OpenCV.js 教程contrib 模块教程),一份 FAQ 文档(经常问的问题 (FAQ)),一份参考资料文档(参考文献),以及主要模块和额外模块的 API 参考。

主要模块和额外模块的 API 参考,适合用来在开发过程中检索各个模块的 API,对于学习,这些文档会显得非常枯燥且让人迷惑。

参考资料文档(参考文献)包含了许多参考文献的说明,其中一部分有网页链接。这份文档作为查找扩展阅读材料的入口有一定价值。

介绍文档(介绍)包含对 OpenCV 整个项目的结构,以及 API 概念的说明,学习 OpenCV 必读材料

contrib 模块教程)的质量有点参差不齐,其中不同模块的教程,其繁简程度也大为不同,有些非常简略,有些则很详细。对于要学习还没有进入正式版的 contrib 模块的同学,还是非常有价值的。

OpenCV 官方提供的三份教程是针对不同平台学习 OpenCV 的绝佳材料。OpenCV 教程 对 OpenCV 的主要数据结构,主要概念,及各个模块的 API 都有着很详细的说明,示例代码主要用 C++ 编程语言。

OpenCV-Python 教程 为 Python 开发者提供了关于 OpenCV 的详尽介绍。

OpenCV.js 教程 则为 JavaScript 开发者提供了关于 OpenCV 的详尽介绍。

OpenCV 教程 的内容

OpenCV 官方提供的三份教程中,OpenCV 教程 值得好好学习一下,另两份教程则可以根据自己所用的开发语言选择是深入学习,还是弃之不用。

这里再看下 OpenCV 教程 的主要内容:

OpenCV 教程OpenCV 介绍 部分,非常详细地介绍了为各种各样的平台搭建 OpenCV 开发环境的过程。OpenCV 教程 的其余部分,则分模块介绍 OpenCV 的各项功能。

OpenCV 教程OpenCV 介绍 部分的内容如下:

Linux

Windows

Java & Android

其它平台

基础用法

  • 图像入门 - 我们将学习如何从文件中加载图像,并使用 OpenCV 显示它

杂项

OpenCV 教程OpenCV 介绍 部分对于开发环境搭建过程的详细说明,无疑是我们学习 OpenCV 过程中绕不过去的第一步的宝贵参考。

OpenCV-Python 教程 的内容

当前 Python 在 AI 和计算机视觉领域应用广泛,OpenCV-Python 教程 对于 Python 计算机视觉学习和开发的同学极具价值。这里看一下这份教程的内容:

  • OpenCV 介绍

    学习如何在计算机上搭建 OpenCV-Python 开发环境!

  • OpenCV 中的 Gui 功能

    在这里,我们将学习如何显示和保存图像和视频、控制鼠标事件和创建轨迹栏。的第一步的宝贵

  • 核心操作

    在本节中,我们将学习图像的基本操作,如像素编辑、几何变换、代码优化、一些数学工具等。的第一步的宝贵

  • OpenCV 中的图像处理

    在这一节,我们将学习 OpenCV 中不同的图像处理功能。

  • 特征探测和描述

    在本节中,我们将了解特征探测器和描述符

  • 视频分析 (video 模块)

    在本节中,我们将学习使用对象跟踪等视频的不同技术。

  • 相机校准和 3D 重建

    在本节中,我们将学习相机校准、立体成像等。

  • 机器学习

    在本节中,我们将学习 OpenCV 中不同的机器学习功能。

  • 计算摄影

    在本节中,我们将学习不同的计算摄影技术,例如图像去噪等。

  • 目标探测 (objdetect 模块)

    在本节中,我们将学习目标检测技术,例如人脸检测等。

  • OpenCV-Python 绑定

    在本节中,我们将看一下 OpenCV-Python 绑定是如何生成的。

这份教程的结构与 OpenCV 教程 的结构类似,其中的 OpenCV 介绍 部分同样介绍了开发环境搭建,其余各部分介绍 OpenCV 的各个模块。

OpenCV-Python 教程OpenCV 介绍 部分内容如下:

基于官方文档的 OpenCV 学习路线图

官方文档中的 API 参考部分并没有太大的学习价值,可以基于官方提供的几份教程,具体来说,是 OpenCV 教程OpenCV-Python 教程,建立自己的 C++ 和 Python 编程语言的 OpenCV 学习路线图。这两份教程介绍的主题差别不是很大,但不同主题在各份教程中的编排顺序略有不同。

这里以 开发环境搭建 -> OpenCV 的结构和基本概念 -> OpenCV 库提供的开发实用工具 -> OpenCV 核心操作和功能 -> 图像处理 -> 其它 OpenCV 主要模块 -> OpenCV contrib 模块 这样的思路来制定学习路线图:

  1. 搭建 Python 和 C++ 的开发环境

通过学习教程的 OpenCV 介绍 部分可以完成。

OpenCV-Python Tutorials - Install OpenCV-Python in Ubuntu
OpenCV Tutorials - Installation in Linux
OpenCV Tutorials - Using OpenCV with Eclipse (plugin CDT)
OpenCV Tutorials - Using OpenCV with gcc and CMake

  1. OpenCV 项目的结构和 API 概念

OpenCV 4.5.5 版文档的入口页面中的 介绍 部分。

  1. 应用程序实用工具

应用程序实用工具 (highgui,imgcodecs,videoio 模块) (OpenCV 教程)
OpenCV 中的 Gui 功能 (OpenCV Python 教程)

  1. 核心功能和操作

核心功能 (core 模块) (OpenCV 教程)
核心操作 (OpenCV Python 教程)

  1. 图形处理

图像处理 (imgproc 模块) (OpenCV 教程)
OpenCV 中的图像处理 (OpenCV Python 教程)

  1. 相机校准和 3D 重建

相机校准和 3D 重建 (calib3d 模块) (OpenCV 教程)
相机校准和 3D 重建 (OpenCV Python 教程)

  1. 特征探测和描述 - 特征框架 (feature2d 模块)

2D 特征框架 (feature2d 模块) (OpenCV 教程)
特征探测和描述 (OpenCV Python 教程)

  1. 计算摄影

其它教程 (ml,objdetect,photo,stitching,video) (OpenCV 教程)
计算摄影 (OpenCV Python 教程)

这其中包含图像去噪、图像修补,和高动态范围 (HDR) 等内容。

  1. 目标检测

其它教程 (ml,objdetect,photo,stitching,video) (OpenCV 教程)
目标探测 (objdetect 模块) (OpenCV Python 教程)

  1. 视频分析

其它教程 (ml,objdetect,photo,stitching,video) (OpenCV 教程)
视频分析 (video 模块) (OpenCV Python 教程)

  1. 机器学习

其它教程 (ml,objdetect,photo,stitching,video) (OpenCV 教程)
机器学习 (OpenCV Python 教程)

  1. 深度神经网络

深度神经网络 (dnn 模块) (OpenCV 教程)

  1. 图 API

图 API (gapi 模块) (OpenCV 教程)

  1. GPU 加速的计算机视觉

GPU 加速的计算机视觉 (cuda 模块) (OpenCV 教程)

  1. 背景分割

bgsegm 模块教程 (contrib 模块教程)

  1. 超分辨率

使用 CNN 的超分辨率 (contrib 模块教程)

OpenCV 的这些教程,与一般的技术书还是有些不一样,它们并不是某个人或某个组织按照特定的规划,组织编写的结构严谨的教材,而是不同作者针对不同主题写就的文章的合集。

对于 OpenCV 具体模块的学习,不需要严格按照上面的路线图来走,具体模块学习的先后,可以按照自己的开发需要进行。

Done。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容