opencv

跨平台計算機視覺庫

OpenCV是一個基於BSD許可(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了圖像處理和計算機視覺方面的很多通用演演算法。

OpenCV用C++語言編寫,它的主要介面也是C++語言,但是依然保留了大量的C語言介面。該庫也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的介面。這些語言的API介面函數可以通過在線文檔獲得。如今也提供對於C#、Ch、Ruby,GO的支持。

所有新的開發和演演算法都是用C++介面。一個使用CUDA的GPU介面也於2010年9月開始實現。

定義


OpenCV於1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一個基於BSD許可(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了圖像處理和計算機視覺方面的很多通用演演算法。最新版本是3.4 ,2017年12月23日發布。
OpenCV 擁有包括 500 多個C函數的跨平台的中、高層 API。它不依賴於其它的外部庫——儘管也可以使用某些外部庫。
OpenCV 為Intel® Integrated Performance Primitives(IPP)提供了透明介面。這意味著如果有為特定處理器優化的 IPP 庫,OpenCV 將在運行時自動載入這些庫。
(註:OpenCV 2.0版的代碼已顯著優化,無需IPP來提升性能,故2.0版不再提供IPP介面)

歷史發展


1999年1月,CVL項目啟動。主要目標是人機界面,能被UI調用的實時計算機視覺庫,為Intel處理器做了特定優化。
2000年6月,第一個開源版本OpenCV alpha 3發布。
2000年12月,針對linux平台的OpenCV beta 1發布。
2006年,支持Mac OS的OpenCV 1.0發布。
2009年9月,OpenCV 1.2(beta2.0)發布。
2009年10月1日,Version 2.0發布。
2010年12月6日,OpenCV 2.2發布。
2011年8月,OpenCV 2.3發布。
2012年4月2日,發布OpenCV 2.4。
2014年8月21日,發布OpenCv 3.0 alpha。
2014年11月11日,發布OpenCV 3.0 beta。
2015年6月4日,發布OpenCV 3.0。
2016年12月,發布OpenCV 3.2版(合併969個修補程序,關閉478個問題)
2017年8月3日,發布OpenCV 3.3版(最重要的更新是把DNN模塊從contrib裡面提到主倉庫)
OpenCV 使用類BSDlicense,所以對非商業應用和商業應用都是免費(FREE)的。(細節參考 license)
OpenCV提供的視覺處理演演算法非常豐富,並且它部分以C語言編寫,加上其開源的特性,處理得當,不需要添加新的外部支持也可以完整的編譯鏈接生成執行程序,所以很多人用它來做演演算法的移植,OpenCV的代碼經過適當改寫可以正常的運行在DSP系統和ARM嵌入式系統中,這種移植在大學中經常作為相關專業本科生畢業設計或者研究生課題的選題。

優勢


OpenCV與其它視覺函數庫性能對比
OpenCV與其它視覺函數庫性能對比
為什麼有OpenCV
計算機視覺市場巨大而且持續增長,且這方面沒有標準API,如今的計算機視覺軟體大概有以下三種:
1、研究代碼(慢,不穩定,獨立並與其他庫不兼容)
2、耗費很高的商業化工具(比如Halcon, MATLAB+Simulink)
3、依賴硬體的一些特別的解決方案(比如視頻監控,製造控制系統,醫療設備)這是如今的現狀,而標準的API將簡化計算機視覺程序和解決方案的開發,OpenCV致力於成為這樣的標準API。
OpenCV致力於真實世界的實時應用,通過優化的C代碼的編寫對其執行速度帶來了可觀的提升,並且可以通過購買Intel的IPP高性能多媒體函數庫(Integrated Performance Primitives)得到更快的處理速度。右圖為OpenCV與當前其他主流視覺函數庫的性能比較。

應用領域


1、人機互動
2、物體識別
3、圖像分割
4、人臉識別
5、動作識別
6、運動跟蹤
7、機器人
8、運動分析
9、機器視覺
10、結構分析
11、汽車安全駕駛

其他相關


作者列表可以在AUTHORS文件中找到。
此外,還有很多人給出了建議、補丁、BUG 報告等等,在文件THANKS中對此有一個不完全的列表。
想要了解OpenCV的新特徵,請參考OpenCV Change Log。
如果有問題,在Google中輸入"OpenCV"搜索。
如果在安裝/運行/使用OpenCV中遇到問題
1、閱讀FAQ中文。
2、在OpenCV 郵件列表中搜索。
3、加入到 yahoo group 上的 OpenCV 郵件列表中(如何加入請參考 FAQs),併發送你的問題到郵件列表中。(這個郵件列表可能會遷移到OpenCV's SourceForge site)
4、參考 OpenCV 的例子代碼,閱讀參考手冊。

編程語言


OpenCV用C++語言編寫,它的主要介面也是C++語言,但是依然保留了大量的C語言介面。該庫也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的介面。這些語言的API介面函數可以通過在線文檔獲得。如今也提供對於C#、Ch、Ruby的支持。
所有新的開發和演演算法都是用C++介面。一個使用CUDA的GPU介面也於2010年9月開始實現。

系統支持


OpenCV可以在Windows,Android,Maemo,FreeBSD,OpenBSD,iOS,Linux 和Mac OS等平台上運行。使用者可以在 SourceForge 獲得官方版本,或者從 SVN 獲得開發版本。OpenCV也是用CMake。
在Windows上編譯OpenCV中與攝像輸入有關部分時,需要DirectShow SDK中的一些基類。該SDK可以從預先編譯的Microsoft Platform SDK(or DirectX SDK 8.0 to 9.0c / DirectX Media SDK prior to 6.0)的子目錄Samples\Multimedia\DirectShow\BaseClasses獲得。

版本發布


2010年12月06日,OpenCV 2.2.0 正式版發布。
2011年06月25日,OpenCV-2.3.0rc 發布了,新增加了一個stitching拼接模塊,Android支持更加方便了,使用Google test框架,其他變化主要是內部性能改進。
2013年07月03日,OpenCV 2.4.6發布。
主要更新是關於手持設備方面的:
首先,OpenCV 2.3的Android build終於變成了官方支持的NDK-Build的方式了。以前的方法相當讓人頭疼,使用的非Android官方的方法去寫JNI介面,tutorial跟著走一遍也不知道所以然。
其次,What’s new裡面說道,新的Android支持是NVidia在開發。本來OpenCV就是支持CUDA顯卡加速的。
2013年12月31日,OpenCV 2.4.8發布。
2014年4月25日,OpenCV 2.4.9發布。
2014年8月21日,OpenCv 3.0 alpha版本發布。
2014年11月11日,OpenCv 3.0 beta版本發布。
2015年6月4日,OpenCV 3.0版本發布。
2015年7月30號,OpenCV2.4.12版本發布。
2015年12月21日,OpenCV3.1版本發布。
2016年12月23日,OpenCV3.2版本發布。
2017年8月3日,OpenCV3.3版本發布。
2018年7月4日,OpenCV3.4.2版本發布。
2018年11月18日,Opencv4.0.0版本發布。