OpenCV是一個跨平台的庫,使用它我們可以開發實時的計算機視覺應用程式。它主要關注圖像處理、視頻採集和分析,包括人臉檢測和目標檢測等特徵。
讓我們從定義術語「計算機視覺」開始這一章。
Computer Vision
計算機視覺可以被定義爲一門學科,它根據場景中存在的結構特性,解釋如何從二維圖像中重建、中斷和理解三維場景。它使用計算機軟體和硬體對人類視覺進行建模和複製。
計算機視覺與下列領域有著顯著的重疊;
圖像處理的重點是圖像處理。
模式識別−它解釋了對模式進行分類的各種技術。
攝影測量學是指從圖像中獲得精確的測量值。
Computer Vision Vs Image Processing
圖像處理處理圖像到圖像的轉換。圖像處理的輸入和輸出都是圖像。
計算機視覺是從圖像中對物體進行明確、有意義的描述。計算機視覺的輸出是對三維場景中結構的描述或解釋。
Applications of Computer Vision
在這裡,我們列出了一些主要領域,其中計算機視覺是大量使用。
Robotics Application
自動確定機器人位置
導航
障礙迴避
裝配(銷釘孔、焊接、噴漆)
操縱(例如美洲獅機器人操縱器)
人機互動(HRI)&負;與人交互並爲人服務的智能機器人
Medicine Application
- Classification and detection (e.g. lesion or cells classification and tumor detection)
- 2D/3D segmentation
- 3D human organ reconstruction (MRI or ultrasound)
- Vision-guided robotics surgery
Industrial Automation Application
- Industrial inspection (defect detection)
- Assembly
- Barcode and package label reading
- Object sorting
- Document understanding (e.g. OCR)
Security Application
生物測定(虹膜、指紋、人臉識別)
監視-檢測某些可疑活動或行爲
Transportation Application
- Autonomous vehicle
- Safety, e.g., driver vigilance monitoring
Features of OpenCV Library
使用OpenCV庫,您可以−
讀寫圖像
捕獲和保存視頻
處理圖像(過濾、變換)
執行特徵檢測
檢測視頻或圖像中的特定對象,如人臉、眼睛、汽車。
分析視頻,即估計其中的運動,減去背景,然後跟蹤其中的對象。
OpenCV最初是在C++中開發的;。除此之外,還提供了Python和Java綁定。OpenCV運行在各種作業系統上,如windows、Linux、OSx、FreeBSD、Net BSD、openbsd等。
本教程通過使用Java綁定的示例解釋OpenCV的概念。
OpenCV Library Modules
以下是OpenCV庫的主要庫模塊。
Core Functionality
本模塊涵蓋用於構建OpenCV應用程式的基本數據結構,如標量、點、範圍等。除此之外,它還包括用於存儲圖像的多維數組Mat。在OpenCV的Java庫中,這個模塊作爲一個名爲org.OpenCV.core的包包含。
Image Processing
本模塊涵蓋圖像過濾、幾何圖像轉換、顏色空間轉換、直方圖等各種圖像處理操作。在OpenCV的Java庫中,本模塊作爲一個名爲org.OpenCV.imgproc的包被包含。
Video
本模塊涵蓋視頻分析概念,如運動估計、背景減法和目標跟蹤。在OpenCV的Java庫中,這個模塊作爲一個名爲org.OpenCV.video的包包含。
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.imgcodecs和org.OpenCV.videoio。
A Brief History of OpenCV
OpenCV最初是英特爾的一項研究計劃,旨在爲CPU密集型應用程式提供建議。1999年正式啓動。