Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

OpenCV是什么?

發布時間:2021-04-29 11:03:05


OpenCV是什么


OpenCV概述

在說OpenCV之前要說一下什么是計算機視覺,計算機視覺是在圖像基礎上發展起來的一門新興學科,計算機視覺是研究讓機器如何看世界,認識這個五彩繽紛的世界,就是讓攝像頭代替人眼來對目標進行識別,跟蹤和測量,并進一步對捕獲的圖像數據(視頻數據)轉換成一種新的表達方式或者一個新的決策的過程!在轉換過程中進行的轉換都是為了達到某一目標。


舉個列子:通過輸入設備(攝像頭、掃描儀)將前方1米處發現的物體輸入到電腦中,并對這些數據進行處理,然后與數據庫里的模型比對,那么最后得到的決策可能是前方有一輛汽車或者站著一個人,處理的過程可能是把彩色圖像轉換成單通道的灰色圖(灰色圖要比彩色圖容易處理后面會說為什么),對圖像降噪聲,或者通過圖像序列分析去除攝像機晃動的影響,這些轉換過程/處理過程最終將會轉換成一種新的決策,表達方式!


隨著計算機視覺的誕生,人工智能技術也隨著和誕生,其中人工智能技術中生物識別技術能從計算機處理的圖像數據(多維數據)中獲取信息,并對這個信息進行識別,并做相應的處理,人工智能領域下有很多技術比如最著名的機器學習等等這里就不做太多的詳細介紹,后面學到機器學習時會和大家詳細介紹人工智能技術下各個領域作用!

因為計算機視覺是計算機學科所以在、工程、信號處理、物理學、應用數學和統計學、神經生理學和認知科學等都有研究方面,在制造業、檢驗、文檔分析、醫療診斷、和軍事等領域等各種智能/自主應用方面,都有非常廣闊的前景發展!


計算機視覺實現起來難嗎?
01


人類本身是視覺動物,所以人類覺得可以很容易實現計算機視覺,假如說讓你從一個場景中找到一輛汽車,顯然很容易,因為汽車本身較大,容易被眼睛所捕獲,但是其中在捕獲的過程中有著很復雜的過程:

人腦將視覺信號劃分入很多個通道,將各種不同的信息輸入你的大腦。你的大腦有一個關注系統,會根據任務識別出場景的重要部分,并做重點分析,而其他部分則分析的較少。在人類視覺流中存在著大量的反饋,但是目前人類對之了解甚少。肌肉控制的傳感器以及其他所有傳感器的輸入信息之間存在著廣泛的關聯,這使得大腦可以依賴從出生以來所學到的信息,在大腦中反饋信息。

所以我們要想真正的實現一個人工智能產品的話就要把人類自己本身的所有信息模擬到計算機上,比如大腦=CPU,眼睛=攝像頭,感官=傳感器,并且要讓之間協調工作,相對來說是非常復雜的!

其次計算機接受到的數據主要來源于攝像頭,磁盤文件中的數值矩陣:

圖1.1(取之《學習OpenCV》)中的汽車有一個反光鏡但是計算機只看到一組數值矩陣:

圖1.1

由于該圖是單通道(黑白圖)所以一個矩陣數值就可以表示一個像素點,如果是多通道的RGB顏色就需要三個數值表示,比如194210 201表示一個像素點,而單通道194就可以表示像素點!

其中非常令人頭疼的問題就是圖像噪聲:

左:正常圖片右:帶圖像噪聲的圖片

如果一張圖里每個像素點上都摻雜著圖像噪聲的話會降低圖像識別的準確率,圖像噪聲產生的問題主要來自輸入設備(攝像機)。

場景物體的干擾
02

假如我們要做一個能夠自動把房間里掉地上的書撿起來放到書架上,那么我們需要從這個房間場景中找出我們所需要的目標物品:書。

假如說這個人的房間非常大或者在客廳,那么時首先如果從右到左或者從左到右采用地毯式的搜索的話會需要進行大量的分析算法同時因為CPU運算單元會進行過多的算法運算一直處于高電平狀態。會加快消耗機器人的電能,在這樣的情況下我們可以告訴機器人書一般會在某個地方出現:書柜、桌子、床上,沙發的周邊地區。然后將這三個模型導入到撿書機器人的比對數據庫里,首先一點是在拍攝這些配對模型時,要將物品放到最能表現其特征的地方:“正中心位置”。

有了這些信息之后那么機器人可以很快的過濾掉場景中書籍不可能會掉落的地方,那么機器人可以很快的找出書籍并放到書架上!當然你也可以給機器人安裝激光掃描儀使其捕獲的物品體積使其在機器訓練時用捕獲的數據與模型數據進行校正時更加準確!

重建二維圖
03

就像上面說的,要從一個房間里找到書可以根據特征來尋找加快尋找時間,那么在找到一個目標時首先要將這個目標轉換成二維圖,也就是說三維圖是立體的,存在前后之分,而二維圖不存在前后之分,只有寬高,為什么要轉換成二維圖?

二維圖的方法就是從一個三維圖(立體)中根據二維特征(平面)將二維數據提取出來并映射到另外一個圖像數據上!

可以看到二維圖可以更好的方便識別所需表面特征!


OpenCV

image.png

簡單介紹
01

OpenCV是計算機視覺開源庫,主要算法涉及圖像處理和機器學習相關方法。可以運行在Linux、Windows、AndroidMac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。

OpenCV用C++語言編寫,它具有C ++,Python,JavaMATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實時視覺應用,并在可用時利用MMX和SSE指令, 如今也提供對于C#、Ch、Ruby,GO的支持。


可移植性
02

最新版本是OpenCV4.5.1,Opencv采用C/C++編寫在不同的系統環境上只要稍微修改一下代碼就可以編譯通過,可以在Mac/Linux/Windows系統上運行,并且為python,Ruby,MATLAB等編程語言提供接口!

運行效率
03

OpenCV在設計時的目標就是執行速度盡量快所以內部函數都是標C函數來編寫的,如果想要起到硬件加速(內部函數用IPP優化)需要購買IPP庫,購買IPP庫后OpenCV在運行時會自動調用IPP庫做優化!

應用領域
04

目前OpenCV應用領域非常廣泛,在醫療設備、工廠檢驗、立體視覺、機器學習、人臉別識別、圖像拼接、生物醫學分析、無人機、等人工智能領域有廣泛應用,OpenCV可謂大顯身手,而這些,僅僅是其應用的冰山一角!

甚至計算機視覺可以用在聲譜圖上,對聲音和音樂進行分析!

并且計算機視覺被廣泛應用于工廠檢驗,大規模的產品制造在流水線上的某一環節都使用計算機視覺做檢測!

版權
05

在多數圖像處理相關的應用程序中被采用,BSD許可,可以免費應用在商業和研究領域,OpenCV開源協議允許你使用OpenCV庫的全部代碼,生成商業產品,并且不需要公開源代碼,或對OpenCV庫中的算法改善后的算法!

如今,來自世界各地的各大公司、科研機構的研究人員,共同維護支持著opencv的開源庫開發。這些公司和機構包括:微軟,IBM,索尼、西門子、google、intel、斯坦福、MIT、CMU、劍橋等。

預備學習OpenCV
06

在學習OpenCV之前要懂得C/C++編程,和一些數學基礎!


盛圖科技
高端IT培訓第一品牌


上一篇:Linux模擬實現僵尸進程
下一篇:關于死鎖的一系列問題
成年av女同网站㊣精品人妻无码专区在线视频㊣日日摸夜夜添夜夜添国产2021㊣成年女人免费视频播放大全