- OpenCV 教程
- OpenCV - 首頁
- OpenCV - 概述
- OpenCV - 環境配置
- OpenCV - 影像儲存
- OpenCV - 讀取影像
- OpenCV - 寫入影像
- OpenCV - 圖形使用者介面 (GUI)
- 繪圖函式
- OpenCV - 繪製圓形
- OpenCV - 繪製直線
- OpenCV - 繪製矩形
- OpenCV - 繪製橢圓
- OpenCV - 繪製多邊形
- OpenCV - 繪製凸多邊形
- OpenCV - 繪製帶箭頭的直線
- OpenCV - 新增文字
- 濾波
- OpenCV - 雙邊濾波
- OpenCV - 方框濾波
- OpenCV - 平方盒濾波
- OpenCV - Filter2D
- OpenCV - 膨脹
- OpenCV - 腐蝕
- OpenCV - 形態學操作
- OpenCV - 影像金字塔
- Sobel 運算元
- OpenCV - Sobel 運算元
- OpenCV - Scharr 運算元
- 攝像機和人臉檢測
- OpenCV - 使用攝像機
- OpenCV - 圖片中的人臉檢測
- 使用攝像機進行人臉檢測
- OpenCV 有用資源
- OpenCV - 快速指南
- OpenCV - 有用資源
- OpenCV - 討論
OpenCV - 概述
OpenCV是一個跨平臺庫,我們可以用它來開發即時的**計算機視覺應用程式**。它主要關注影像處理、影片捕捉和分析,包括人臉檢測和物體檢測等功能。
讓我們從定義“計算機視覺”這個術語開始本章節。
計算機視覺
計算機視覺可以定義為一個學科,它解釋瞭如何根據場景中存在的結構屬性,從其二維影像重建、解釋和理解三維場景。它處理使用計算機軟體和硬體模擬和複製人類視覺。
計算機視覺與以下領域有很大的重疊:
**影像處理** - 它專注於影像處理。
**模式識別** - 它解釋了各種分類模式的技術。
**攝影測量學** - 它關注從影像中獲取精確測量。
計算機視覺與影像處理
**影像處理**處理影像到影像的轉換。影像處理的輸入和輸出都是影像。
**計算機視覺**是從影像中構建對物理物件的明確、有意義的描述。計算機視覺的輸出是對三維場景中結構的描述或解釋。
計算機視覺的應用
這裡列出了一些計算機視覺大量使用的主要領域。
機器人應用
定位 - 自動確定機器人位置
導航
避障
組裝(銷孔、焊接、噴漆)
操控(例如 PUMA 機器人機械手)
人機互動 (HRI) - 智慧機器人與人互動並服務於人
醫學應用
- 分類和檢測(例如病變或細胞分類和腫瘤檢測)
- 二維/三維分割
- 三維人體器官重建(MRI 或超聲波)
- 視覺引導機器人手術
工業自動化應用
- 工業檢驗(缺陷檢測)
- 組裝
- 條形碼和包裝標籤讀取
- 物體分揀
- 文件理解(例如 OCR)
安全應用
生物特徵識別(虹膜、指紋、人臉識別)
監控 - 檢測某些可疑活動或行為
交通應用
- 自動駕駛車輛
- 安全,例如駕駛員警覺性監控
OpenCV 庫的特性
使用 OpenCV 庫,您可以:
讀取和寫入影像
捕捉和儲存影片
處理影像(濾波、變換)
執行特徵檢測
檢測影片或影像中特定物體,例如人臉、眼睛、汽車。
分析影片,即估計影片中的運動、減去背景以及跟蹤影片中的物體。
OpenCV 最初是用 C++ 開發的。除此之外,還提供了 Python 和 Java 繫結。OpenCV 執行在各種作業系統上,例如 Windows、Linux、OSx、FreeBSD、Net BSD、Open BSD 等。
本教程將使用 Java 繫結,透過示例來解釋 OpenCV 的概念。
OpenCV 庫模組
以下是 OpenCV 庫的主要庫模組。
核心功能
此模組涵蓋了用於構建 OpenCV 應用程式的基本資料結構,例如 Scalar、Point、Range 等。除此之外,它還包括多維陣列**Mat**,用於儲存影像。在 OpenCV 的 Java 庫中,此模組作為名為**org.opencv.core**的包包含。
影像處理
此模組涵蓋了各種影像處理操作,例如影像濾波、幾何影像變換、顏色空間轉換、直方圖等。在 OpenCV 的 Java 庫中,此模組作為名為**org.opencv.imgproc**的包包含。
影片
此模組涵蓋了影片分析概念,例如運動估計、背景減法和目標跟蹤。在 OpenCV 的 Java 庫中,此模組作為名為**org.opencv.video**的包包含。
影片輸入/輸出
此模組解釋了使用 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.imgcodecs**和**org.opencv.videoio**。
OpenCV 的簡史
OpenCV 最初是英特爾的一個研究專案,旨在為 CPU 密集型應用程式提供建議。它於 1999 年正式啟動。
- 2006 年,其第一個主要版本 OpenCV 1.0 釋出。
- 2009 年 10 月,第二個主要版本 OpenCV 2 釋出。
- 2012 年 8 月,OpenCV 被非營利組織 OpenCV.org 接管。