Wiki
初識OpenCV
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
1.簡介
提及計算機視覺(computer vision),就不得不提起影像處理(image processing)。雖然兩者沒有明確的界線,但是通常將影像處理理解為計算機視覺的預處理過程。因此,在介紹計算機視覺之前,有必要先介紹影像處理。
影像處理一般指數字影像處理(digital image processing),是通過數學函式和影像變換等手段,對二維數字影像進行分析,從而獲得影像資料中的潛在資訊。其內容通常包括影像壓縮、影像增強與復原,以及匹配、描述和識別三大部分,涵蓋了噪聲去除、影像分割、特徵提取等多種處理方法與技術。
計算機視覺是一門研究如何讓機器“看”的科學,即利用計算機來模擬人的視覺機理。它通過攝像頭代替人眼,對目標進行識別、跟蹤和測量,並通過對視覺資料的處理獲取更深層次的資訊。例如,通過三維重建技術對環繞建築物一週的影片進行分析,可以在計算機中重構出建築物的三維模型;又如,通過安裝在車輛上的攝像頭拍攝前方場景,可以推斷車輛是否能夠順利通過前方區域,從而輔助決策。
對於人類來說,通過視覺獲取環境資訊是一件非常容易的事情,因此有些人會誤認為實現計算機視覺也是一件簡單的事情,但事實並非如此。計算機視覺本質上是一個“逆問題”,即通過觀測到的資訊去恢復被觀測物體或環境的資訊。在這個過程中往往會丟失部分資訊,導致資訊不完整,從而增加問題的複雜性。例如,在使用單個攝像頭拍攝場景時,由於缺失了距離資訊,常常會出現影像中“人比樓房高”的現象。因此,計算機視覺仍然是一項具有挑戰性的研究領域,還有很長的發展道路要走。
無論是影像處理還是計算機視覺,本質上都需要在計算機中處理資料。因此,研究人員必須面對一個棘手的問題——如何將研究成果通過程式碼實現並進行模擬驗證。在這一過程中,經常會遇到重複編寫基礎功能程式的問題,也就是人們常說的“重複造輪子”。
為了給研究人員提供“現成的車輪”,英特爾(Intel)公司提出了開源計算機視覺庫(Open Source Computer Vision Library,OpenCV)的概念。該庫集成了大量影像處理與計算機視覺領域的通用演算法,從而有效避免重複和低效的開發工作,OpenCV 也因此應運而生。
OpenCV 由一系列 C 語言函式和 C++ 類構成。除了支援 C/C++ 開發外,還支援 C#、Ruby 等程式語言,並提供 Python、MATLAB、Java 等語言介面,可運行於 Linux、Windows、macOS、Android 和 iOS 等多種作業系統。OpenCV 的出現極大地優化了計算機視覺演算法驗證的流程,因此受到了眾多研究者的青睞。
經過二十多年的發展,OpenCV 已成為計算機視覺領域最重要的工具之一。
2.參考資料
影片教學:https://www.bilibili.com/video/BV1jk4y1i7gN
圖書教學:https://www.epubit.com/bookDetails?id=UB7209964621702
參考程式碼:https://github.com/tungchiahui/OpenCV_Projects
3.安裝OpenCV
詳見opencv_cuda環境搭建