OpenCV簡介


OpenCV是一個跨平台的庫,使用它我們可以開發實時的計算機視覺應用程式。 它主要集中在影象處理,視訊採集和分析,包括人臉檢測和物體檢測等功能。

這一章,讓我們通過定義術語「計算機視覺」來開始。

計算機視覺

計算機視覺可以被定義為一個學科,解釋如何根據場景中存在的結構的屬性,從其2D影象重構,中斷和理解3D場景。 它使用計算機軟體和硬體處理建模和複製人類視覺。
計算機視覺與以下領域顯著重疊 -

  • 影象處理 - 它著重於影象處理。
  • 圖形識別 - 它解釋了分類模式的各種技術。
  • 攝影測量 - 它涉及從影象獲得準確的測量。

計算機視覺與影象處理

影象處理涉及影象到影象的轉換。 影象處理的輸入和輸出都是影象。

計算機視覺是從物體形象中對物理物體進行明確而有意義的描述。 計算機視覺的輸出是對3D場景中結構的描述或解釋。

計算機視覺的應用

在這裡,我們列舉了計算機視覺大量使用的一些主要領域。

機器人應用

  • 在地化 - 自動確定機器人位置
  • 導航
  • 避免障礙
  • 裝配(掛孔,銲接,噴漆)
  • 操作(例如PUMA機器人操作器)
  • 人機互動(HRI) - 智慧機器人與人互動和服務

醫學應用

  • 分類和檢測(例如病變或細胞分類和腫瘤檢測)
  • 2D/3D分割
  • 3D人體器官重建(MRI或超聲)
  • 視覺引導機器人手術

工業自動化應用

  • 工業檢查(缺陷檢測)
  • 部件
  • 條碼和包裝標籤讀取
  • 物件排序
  • 文件理解(例如OCR)

安全應用

  • 生物識別(虹膜,指紋,臉部識別)
  • 監視 - 檢測某些可疑活動或行為

交通運輸應用

  • 自主車輛
  • 安全,例如駕駛員警惕性監控

OpenCV庫的特點

使用OpenCV庫,可以 -

  • 讀取和寫入影象
  • 捕獲並儲存視訊
  • 過程影象(過濾,變換)
  • 執行功能檢測
  • 檢測視訊或影象中的特定物件,例如臉部,眼睛,汽車。
  • 分析視訊,即估計其中的運動,減去背景,並跟蹤其中的物件。

OpenCV最初是用C++開發的。 除此之外,還提供了Python和Java系結。 OpenCV可以在各種作業系統上執行,如Windows,Linux,OSx,FreeBSD,Net BSD,Open BSD等。

本教學通過使用Java系結的範例解釋了OpenCV的概念。

OpenCV庫模組

以下是OpenCV庫的主要庫模組。

核心功能
該模組涵蓋了用於構建OpenCV應用程式的基本資料結構,如標量,點,範圍等。 除此之外,還包括用於儲存影象的多維陣列Mat。 在OpenCV的Java庫中,這個模組包含在一個名字為org.opencv.core的包內。

影象處理
該模組涵蓋了各種影象處理操作,如影象過濾,幾何影象轉換,顏色空間轉換,直方圖等。在OpenCV的Java庫中,該模組包含在一個名稱為org.opencv.imgproc的包內。

視訊
本模組涵蓋了運動估測,背景扣除和物件跟蹤等視訊分析概念。 在OpenCV的Java庫中,這個模組包含在一個名字為org.opencv.video的包內。

視訊I/O
本模組解釋了使用OpenCV庫的視訊捕獲和視訊編解碼器。 在OpenCV的Java庫中,該模組由名稱為org.opencv.videoio的包提供。

calib3d

該模組包括有關基本多檢視幾何演算法,單個和立體攝像機標定,物件姿態估計,立體對應和三維重建元素的演算法。 在OpenCV的Java庫中,該模組由名稱為org.opencv.calib3d的軟體包提供。

features2d

該模組包含特徵檢測和描述的概念。 在OpenCV的Java庫中,該模組由名稱org.opencv.features2d的包提供。

Objdetect

該模組包括檢測物件和預定義類的範例,例如面孔,眼睛,杯子,人物,汽車等。在OpenCV的Java庫中,該模組由名稱為org.opencv.objdetect的包提供。

Highgui

這是一個易於使用的介面,具有簡單的UI功能。 在OpenCV的Java庫中,這個模組的功能包含在兩個不同的包中,即org.opencv.imgcodecsorg.opencv.videoio

OpenCV簡史

OpenCV最初是英特爾研究計劃,為CPU密集型應用提供建議。 它於1999年正式啟動。

  • 在2006年,它的第一個主要版本,OpenCV 1.0發布。
  • 2009年10月,第二個主要版本OpenCV 2發布。
  • 2012年8月,OpenCV被非營利組織OpenCV.org採用。