天天看點

《Arduino計算機視覺程式設計》一第2章 OpenCV的基礎與安裝2.1 OpenCV的基礎

開源計算機視覺庫(opencv)是一個供學術研究人員、商業公司、嵌入式裝置開發社群以及全世界愛好者使用的計算機視覺庫。opencv提供了c++、c、python和java等語言版本的接口,并且支援windows、linux、mac os、android和ios平台。它在設計的時候就考慮到了計算效率和易用性,并專注于支援實時應用。算法經過了優化并且适合運作在不同的硬體平台上,即使在多核情況下也運作良好。确實,opencv的一個優勢就是它有一個大約5萬人的使用者社群。它的使用範圍非常廣泛,從對象識别到運動檢測都有覆寫,并且在機器人技術社群中非常受歡迎。讓我們開始介紹opencv子產品,進而深入了解計算機視覺。

在本節中,我們會讨論opencv元件以便更好地了解它的結構,并且會介紹opencv的基礎。這樣你将會熟悉這些子產品,在後面章節的arduino/opencv項目中可以根據需要來添加。是以準備好學習這些子產品吧!這些子產品既有共享庫也有靜态庫。opencv提供了很多使用者易用的功能。這樣我們可以專注于項目本身。在最新的穩定版本中,可使用下列子產品:

opencv_core:這個簡潔的子產品定義了我們經常使用的基本資料結構,包括緊密多元數組mat和其他子產品使用的基本函數。

opencv_imgproc:在圖像處理子產品的幫助下,我們可以像專業人員一樣修改原始圖像,使得它們可以被計算機視覺系統進一步處理。這個子產品提供了線性和非線性的圖像濾波、圖像幾何變換、顔色空間轉換、直方圖等内容。

opencv_video:在視訊子產品的幫助下,現在可以進行實時處理了。這個子產品提供了非常重要的幀間處理能力,比如運動預測、背景模組化和對象追蹤等算法。

opencv_calib3d:這個多視圖子產品可以使用多個相機産生的圖像生成一個新的次元下的視圖。它還控制着深度資訊提取。

opencv_feature2d:這個子產品使用了許多快速的實時算法來繼續邊角的檢測。在項目中需要進行特征檢測、特征描述以及描述比對時,會凸顯其重要性。

opencv_objdetect:在前面的子產品提取了一些主要特征後,我們現在可以檢測對象和一些預定義類的執行個體(比如臉、眼睛、被子、人、汽車等)。

opencv_highgui:這個子產品提供了一個很棒的ui接口。我們可以使用gui特性來更好地了解資料的捕獲和處理。

opencv_videoio:這個子產品提供了視訊捕獲和視訊解碼器的接口。我們将在實時資料采集的應用中用到這個子產品。

opencv_gpu:不同opencv子產品的gpu加速算法。

還有其他輔助子產品,比如flann、google test wrappers、python binding,等等。

準備好在接下來的幾章中去發現這幾個子產品吧!但首先,確定已經在你的開發平台上安裝好opencv!下一節将指導你完成庫的安裝。我們開始實踐吧!