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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章