OpenCV
- OpenCV 設(shè)計(jì)用于進(jìn)行高效的計(jì)算蜘澜,十分強(qiáng)調(diào)實(shí)時(shí)應(yīng)用的開發(fā)响疚。它由 C++ 語言編寫并進(jìn)行了深度優(yōu)化,從而可以享受多線程處理的優(yōu)勢(shì)忿晕。
- OpenCV 的一個(gè)目標(biāo)是提供易于使用的計(jì)算機(jī)視覺接口,從而幫助人們快速建立精巧的視覺應(yīng)用慎王。
- OpenCV 庫包含從計(jì)算機(jī)視覺各個(gè)領(lǐng)域衍生出來的 500 多個(gè)函數(shù),包括工業(yè)產(chǎn)品質(zhì)量檢驗(yàn)、醫(yī)學(xué)圖像處理蜀漆、安保領(lǐng)域、交互操作确丢、相機(jī)校正、雙目視覺以及機(jī)器人學(xué)褂始。
OpenCV 的目標(biāo)。
- 為高級(jí)的視覺研究提供開源并且優(yōu)化過的基礎(chǔ)代碼崎苗,不再需要重復(fù)造輪子舀寓。
- 以提供開發(fā)者可以在此基礎(chǔ)上進(jìn)行開發(fā)的通用接口為手段傳播視覺相關(guān)知識(shí),這樣代碼有更強(qiáng)的可讀性和移植性互墓。
- 以創(chuàng)造可移植的、優(yōu)化過的免費(fèi)開源代碼來推動(dòng)基于高級(jí)視覺的商業(yè)應(yīng)用篡撵,這些代碼可以自由使用,不要求商業(yè)應(yīng)用程序開放或免費(fèi)券盅。
OpenCV的模塊組成:
- 最底層是基于硬件加速層(HAL)的各種硬件優(yōu)化斑司。
- 再上一層是 opencv_contrib 模塊所包含的 OpenCV 由其他開發(fā)人員所貢獻(xiàn)的代碼渗饮,其包含大多數(shù)高層級(jí)的函數(shù)功能。這就是OpenCV的核心私蕾。
- 接下來是語言綁定和示例應(yīng)用程序。
- 處于最上層的是 OpenCV 和操作系統(tǒng)的交互踩叭。
OpenCV下的具體模塊:
Core:
該模塊包含 OpenCV 庫的基礎(chǔ)結(jié)構(gòu)以及基本操作翠胰。
Improc
圖像處理模塊包含基本的圖像轉(zhuǎn)換,包括濾波以及類似的卷積操作之景。
Highgui
在 OpenCV 3.0中,分割為 imcodecs锻狗、videoio 以及 highgui 三部分。這個(gè)模塊包含可以用來顯示圖像或者簡單的輸入的用戶交互函數(shù)油额。這可以看作是一個(gè)非常輕量級(jí)的 Windows UI 工具包。
Video
該模塊包含讀取和寫視頻流的函數(shù)潦嘶。
Calib3d
這個(gè)模塊包括校準(zhǔn)單個(gè)崇众、雙目以及多個(gè)相機(jī)的算法實(shí)現(xiàn)掂僵。
Feature2d
這個(gè)模塊包含用于檢測(cè)校摩、描述以及匹配特征點(diǎn)的算法。
Objdectect
這個(gè)模塊包含檢測(cè)特定目標(biāo)互妓,比如人臉或者行人的算法。也可以訓(xùn)練檢測(cè)器并用來檢測(cè)其他物體冯勉。
Ml
機(jī)器學(xué)習(xí)模塊本身是一個(gè)非常完備的模塊摹芙,包含大量的機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)并且這些算法都能和OpenCV 的數(shù)據(jù)類型自然交互。
Flann
Flann 的意思是“快速最鄰近庫”浮禾。這個(gè)庫包含一些你也許不會(huì)直接使用的方法份汗,但是其他模塊中的函數(shù)會(huì)調(diào)用它在數(shù)據(jù)集中進(jìn)行最鄰近搜索蝴簇。
GPU
在 OpenCV 中被分割為多個(gè) cuda* 模塊。GPU 模塊主要是函數(shù)在 CUDA GPU 上的優(yōu)化實(shí)現(xiàn)熬词,此外,還有一些僅用于 GPU 的功 能互拾。其中一些函數(shù)能夠返回很好的結(jié)果,但是需要足夠好的計(jì)算資源寄猩,如果硬件沒有GPU,則不會(huì)有什么提升焦影。
Photo
這是一個(gè)相當(dāng)新的模塊封断,包含計(jì)算攝影學(xué)的一些函數(shù)工具舶担。
Stitching
本模塊是一個(gè)精巧的圖像拼接流程實(shí)現(xiàn)坡疼。這是庫中的新功能衣陶,但是,就像 Photo 模塊一樣剪况,這個(gè)領(lǐng)域未來預(yù)計(jì)有很大的增長。
Nonfree
在 OpenCV 3.0 中授翻,被移到 opencv_contrib/xfeatures2d。OpenCV 包含一些受到專利保護(hù)的或者受到使用限制的(比如 SIFT 算法)算法堪唐。這些算法被隔離到它們自己的模塊中翎蹈,以表明你需要做一些特殊的工作,才可以在商業(yè)產(chǎn)品中使用它們荤堪。
Contrib
在 OpenCV 3.0 中枢赔,融合進(jìn)了 opencv_contrib拥知。這個(gè)模塊包含一些新的、還沒有被集成進(jìn) OpenCV 庫的東西举庶。
Legacy
在 OpenCV 3.0 中,被取消户侥。這個(gè)模塊包含一些老的尚未被完全取消的東西。
ocl
在OpenCV 3.0 中蕊唐,被取消,取而代之的是 T-API钓试。這是一個(gè)較新的模塊副瀑,可以認(rèn)為它和 GPU 模塊相似弓熏,它實(shí)現(xiàn)了開放并行編程的 Khronos OpenCL 標(biāo)準(zhǔn)糠睡。雖然現(xiàn)在模塊的特性比 GPU 模塊少很多,但 ocl 模塊的目標(biāo)是提供可以運(yùn)行在任何 GPU 或者是其他可以搭載 Khronos 的并行設(shè)備信认。這與 GPU 模 塊形成了鮮明的對(duì)比均抽,后者使用 Nividia CUDA 工具包進(jìn)行開發(fā)嫁赏,因此只能在 Nividia GPU 設(shè)備上工作油挥。