天天看點

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

智能系統與技術叢書 點選檢視第二章 點選檢視第三章

OpenCV 4計算機視覺項目實戰

(原書第2版)

Learn OpenCV 4 By Building Projects, Second Edition

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

[西班牙]大衛·米蘭·埃斯克裡瓦(David Millán Escrivá)

[西班牙]維尼休斯·G.門東薩(Vinícius G. Mendon

第1章 OpenCV入門

計算機視覺應用程式很有趣,而且很有用,但是其底層算法是計算密集型的。随着雲計算的出現,我們正在獲得更強大的處理能力。

OpenCV庫使我們能夠實時高效地運作計算機視覺算法。它已經存在很多年了,并已成為該領域的标準庫。OpenCV的主要優勢之一是它經過高度優化,幾乎可以在所有平台上使用。

本書将介紹我們要用到的各種算法和使用它們的原因,以及如何在OpenCV中實作它們。

在本章中,我們将學習如何在各種作業系統上安裝OpenCV。我們将讨論OpenCV提供的開箱即用的服務,以及使用内置函數可以做的各種事情。

本章介紹以下主題:

  • 人類如何處理視覺資料,如何了解圖像内容?
  • 我們能用OpenCV做什麼,OpenCV中可以用于實作這些目标的各種子產品是什麼?
  • 我們如何在Windows、Linux和Mac OS X上安裝OpenCV?

1.1 了解人類視覺系統

在進入OpenCV的功能之前,首先需要了解為什麼要建構這些功能。了解人類視覺系統的工作原理是非常重要的,這樣你就可以開發出正确的算法。

計算機視覺算法的目标是了解圖像和視訊的内容,對此,人類似乎毫不費力!那麼,我們如何才能讓機器以相同的精度做到這一點呢?

請看圖1-1。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

人眼可以捕獲視野内的所有資訊,例如顔色、形狀、亮度等。如圖1-1所示,人眼捕獲到關于兩個主要對象的所有資訊,并以某種方式将其存儲起來。如果能知道人眼系統是如何工作的,我們就可以利用它來實作我們的目的。

例如,以下是我們需要知道的一些事情:

  • 我們的視覺系統對低頻内容比高頻内容更敏感。低頻内容是指像素值不會快速變化的平面區域,高頻内容是指具有角和邊緣的區域,其像素值波動很大。我們可以很容易地看到平面上是否有斑點,但很難在高度紋理化的表面發現類似的東西。
  • 人眼對亮度的變化比對顔色的變化更敏感。
  • 我們的視覺系統對運動很敏感。即使沒有直接看到,我們也能很快識别出視野中是否有某些東西正在移動。
  • 我們傾向于在腦海中記下視野中的特征點。假設你看到一張白色的桌子,它有四條黑色的桌腿,桌面的一角有一個紅點。當你看着這張桌子時,你會立刻記下表面和桌腿有相反的顔色,并且其中一個角上有一個紅點。我們的大腦非常聰明!我們自動執行此操作,這樣,當再次遇到該對象時,就能夠立即識别出它。

為了認識人類的視覺,讓我們來看一張俯視圖,以及我們看各種事物的角度,如圖1-2所示。

我們的視覺系統實際上還可以提供更多功能,但這應該足夠了。你可以通過在網上閱讀人類視覺系統(HVS)模型來做進一步探索。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

1.2 人類如何了解圖像内容

如果環顧四周,你會看到很多對象。你每天都會遇到很多不同的對象,你幾乎可以毫不費力地認出它們。當看到一把椅子,你不會等幾分鐘才意識到它實際上是一把椅子。你立即就會知道它是一把椅子。

另一方面,計算機執行這項任務卻非常困難。研究人員多年來一直在研究為什麼計算機在這方面沒有我們做得好。

為了得到這個問題的答案,我們需要了解人類是如何做到的。視覺資料的處理發生在腹側視覺流中。這個腹側視覺流是指我們的視覺系統中與對象識别相關的路徑。它基本上是我們大腦中的一個區域層次結構,可以幫助我們識别對象。

人類可以毫不費力地識别不同的對象,并且可以将類似的對象聚集在一起。我們之是以能夠這樣做,是因為我們已經對同一類對象産生了某種不變性。觀察對象時,我們的大腦會以某種方式提取特征點,這種方式與方向、大小、視角和照明等因素無關。

一把比正常尺寸大一倍并且旋轉45度的椅子仍然是一把椅子。正是由于這種處理方式,我們才能夠輕松識别它。機器并不能這麼容易地做到這一點。人類傾向于根據其形狀和重要特征記住一個對象。無論對象如何放置,我們仍然能夠識别它。

在我們的視覺系統中,建立起了關于位置、比例和視角等層次的不變性,這有助于我們變得非常強大。如果你深入了解我們的系統,就會發現人類的視覺皮層中有些細胞可以響應曲線和線條等形狀。

如果沿着腹側流進一步移動,我們将會看到更複雜的細胞,這些細胞經過訓練,可以響應更複雜的對象,如樹木、大門等。腹側流中的神經元往往表現出接受區大小的增加,而神經元偏愛的刺激的複雜性也會同時增加。

為什麼機器難以了解圖像内容

我們已經知道視覺資料是如何進入人類視覺系統,以及我們的系統是如何處理這些資料的。問題是我們仍然不能完全了解大腦如何識别群組織這些視覺資料。在機器學習中,我們隻是從圖像中提取一些特征,并要求計算機使用算法來學習它們。這些變化仍然存在,例如形狀、大小、視角、角度、照明、遮擋等。

例如,對于機器來說,當從側面觀察時,同一把椅子看起來就非常不同。人類很容易識别出它是一把椅子,無論它是如何呈現給我們的。那麼,我們如何向機器解釋這一點?

一種方法是存儲對象的所有不同的變化,包括大小、角度、視角等。但是這個過程既麻煩又耗時。而且,實際上不可能收集到包含每一個變化的資料。機器将會消耗掉大量記憶體,并且需要大量時間來建構可以識别這些對象的模型。

即便如此,如果某個對象有一部分被遮擋,計算機仍然無法識别它。因為它們會認為這是一個新對象。是以,當我們建構計算機視覺庫時,就需要建構底層功能塊,這些功能塊可以按多種不同方式組合以形成複雜的算法。

OpenCV提供了很多這樣的功能,并且它們經過了高度優化。是以,一旦了解了OpenCV的功能,就可以有效地使用它來建構有趣的應用程式。

讓我們在下一節繼續探讨這個問題。

1.3 你能用OpenCV做什麼

使用OpenCV,你幾乎可以完成你能想到的每種計算機視覺任務。現實生活中的問題要求同時使用許多計算機視覺算法和子產品來獲得所需的結果。是以,你隻需了解要用哪些OpenCV子產品和函數來獲得你想要的東西。

讓我們來看看OpenCV中可以開箱即用的功能。

1.3.1 内置資料結構和輸入/輸出

OpenCV的最大優點之一是它提供了許多内置基元來處理與圖像處理和計算機視覺相關的操作。如果你必須從零開始程式設計,就必須定義Image、Point、Rectangle等。這些幾乎是任何計算機視覺算法的基礎。

OpenCV自帶所有這些基本結構,它們包含在核心子產品中。另一個優點是這些結構已經針對速度和記憶體進行了優化,是以你不必擔心其實作細節。

imgcodecs子產品可以處理圖像檔案的讀取和寫入。當你對輸入圖像進行操作并建立輸出圖像時,可以使用簡單的指令将其另存為.jpg或.png檔案。

使用錄影機時,你将會處理大量的視訊檔案。videoio子產品可以處理與視訊檔案的輸入和輸出相關的所有操作。你可以輕松地從網絡攝像頭捕獲視訊,或以多種不同格式讀取視訊檔案。你甚至可以通過設定諸如每秒幀數、幀大小等屬性來将很多幀儲存為視訊檔案。

1.3.2 圖像處理操作

在編寫計算機視覺算法時,會有很多基本的圖像處理操作,你将反複使用它們。大多數這些函數都在imgproc子產品中。你可以執行諸如圖像過濾、形态學操作、幾何變換、顔色轉換、圖像繪制、直方圖、形狀分析、運動分析、特征檢測等操作。

讓我們來看看圖1-3。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

右圖是左側圖像的旋轉版本,我們在OpenCV中用一行代碼就可以實作這種轉換。

還有另一個名為ximgproc的子產品,它包含進階圖像處理算法,可以用于諸如結構化森林的邊緣檢測、域變換濾波器、自适應流形濾波器等處理。

1.3.3 GUI

OpenCV提供了一個名為highgui的子產品,可用于處理所有進階使用者界面操作。假設你正在解決一個問題,并且想要在繼續下一步之前檢查圖像的外觀,則可利用該子產品具有的建立視窗以顯示圖像和視訊的功能。

它有一個等待功能,可以等你按下鍵盤上的一個鍵才進入下一步。還有一個可以檢測滑鼠事件的功能,在開發互動式應用程式時非常有用。

使用這些功能,你可以在那些輸入視窗上繪制矩形,然後根據所選區域進行處理,以圖1-4為例。

如你所見,我們在視窗上畫了一個綠色矩形。一旦得到這個矩形的坐标,就可以單獨操作該區域。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

1.3.4 視訊分析

視訊分析包括諸如分析視訊中連續幀之間的運動、跟蹤視訊中的不同目标、建立視訊監控模型等任務。OpenCV提供了一個名為video的子產品,可以處理所有這些任務。

還有一個名為videostab的子產品,用來處理視訊穩定的問題。視訊穩定非常重要,因為當你通過手持錄影機拍攝視訊時,通常會有很多抖動需要糾正。所有的現代裝置都會使用視訊穩定功能,以便在将視訊呈現給最終使用者之前對其進行處理。

1.3.5 3D重建

3D重建是計算機視覺中的一個重要課題。給定一組2D圖像,我們可以使用相關算法重建3D場景。在calib3d子產品中,OpenCV提供的算法可以找到這些2D圖像中各種對象之間的關系,并計算其3D位置。

該子產品還可以處理錄影機校準,這對于估計錄影機的參數至關重要。這些參數定義了錄影機如何看到它前面的場景。我們需要知道這些參數來設計算法,否則我們可能會得到意想不到的結果。

請看圖1-5。

正如我們在這裡看到的,相同的對象從多個位置被捕獲。我們的工作是使用這些2D圖像重建原始對象。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

1.3.6 特征提取

正如我們前面所讨論的,人類視覺系統傾向于從給定場景中提取主要特征,然後記住它,這樣便于後續的檢索。為了模仿這一點,人們開始設計各種特征提取器,用于從給定的圖像中提取出這些特征點。流行的算法包括尺度不變特征變換(Scale Invariant Feature Transform,簡稱SIFT)、加速魯棒特征(Speeded Up Robust Features,簡稱SURF)和加速分段測試特征(Features From Accelerated Segment Test,簡稱FAST)。

名為features2d的OpenCV子產品提供了檢測和提取所有這些特征的功能。另一個名為xfeatures2d的子產品提供了更多的特征提取器,其中一些仍處于實驗階段。如果有機會,你可以嘗試使用它們。

還有一個名為bioinspired的子產品,可以為受到生物學啟發的計算機視覺模型提供算法。

1.3.7 對象檢測

對象檢測是指檢測給定圖像中對象的位置。此過程與對象類型無關。如果你設計一個椅子檢測器,它不會告訴你給定圖像中的椅子是高靠背紅色的,還是藍色低靠背的,它隻會告訴你椅子的位置。

檢測對象的位置是許多計算機視覺系統中的關鍵步驟。

以圖1-6為例。

如果你在這幅圖像上運作一個椅子檢測器,它會在所有椅子的周圍放置一個綠色框,但它不會告訴你椅子是什麼樣的。

由于在各種尺度下執行檢測所需的計算次數不同,對象檢測曾經是計算密集型任務。為了解決這個問題,Paul Viola和Michael Jones在2001年的開創性論文中提出了一個很好的算法(

https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-cvpr-01.pdf

),其中提出了一種為任何對象快速設計對象檢測器的方法。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

OpenCV自帶名為objdetect和xobjdetect的子產品,它們提供了設計對象檢測器的架構,你可以使用它們來開發任何對象的探測器,比如太陽鏡、靴子等。

1.3.8 機器學習

機器學習算法被廣泛用于建構實作目辨別别、圖像分類、面部檢測、視覺搜尋等功能的計算機視覺系統。

OpenCV提供了一個名為ml的子產品,該子產品捆綁了許多機器學習算法,包括貝葉斯分類器(Bayes classifier)、k近鄰(k-nearest neighbor,簡稱KNN),支援向量機(support vector machine,簡稱SVM)、決策樹(decision tree)、神經網絡(neural network)等。

它還有一個名為快速近似最近鄰搜尋庫(Fast Approximate Nearest Neighbor Search Library,簡稱FLANN)的子產品,其中包含用于在大型資料集中進行快速最近鄰搜尋的算法。

1.3.9 計算攝影

計算攝影是指使用先進的圖像處理技術來改善相機捕獲的圖像。計算攝影并不專注于光學過程和圖像捕捉方法,而是使用軟體來操縱視覺資料。其應用領域包括高動态範圍成像,全景圖像、圖像補光和光場相機等。

以圖1-7為例。

看看這些生動的色彩!這是高動态範圍圖像的例子,使用傳統的圖像捕獲技術無法實作這種效果。必須在多次曝光中捕獲相同的場景,互相寄存這些圖像,然後将它們很好地混合,之後才能建立出這個圖像。

photo和xphoto子產品包含各種算法,提供與計算攝影有關的算法。還有一個稱為stitching的子產品,它提供建立全景圖像的算法。

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

1.3.10 形狀分析

形狀的概念在計算機視覺中至關重要。我們通過識别圖像中各種不同的形狀來分析視覺資料。實際上,這是許多算法中的重要步驟。

假設你正在嘗試識别圖像中的特定徽标。你知道它可以按各種形狀、方向和大小呈現。作為起步的一個好方法是量化對象的形狀特征。

shape子產品為提取不同形狀、測量它們之間的相似性、轉換對象形狀等操作提供了所有算法。

1.3.11 光流算法

光流算法用于在視訊中跟蹤連續幀中的特征。假設你要跟蹤視訊中的特定對象。在每一幀上運作一個特征提取器是非常耗費計算資源的,這個過程會很慢。是以,你隻需從目前幀中提取出要素,然後在連續幀中跟蹤這些要素。

光流算法在基于視訊的計算機視覺應用中被大量使用。optflow子產品包含了執行光流操作所需的所有算法。還有一個稱為tracking的子產品,其中包含可用于跟蹤特征的更多算法。

1.3.12 人臉和對象識别

人臉識别是指識别給定圖像中的人物。這與人臉檢測不同,在人臉檢測中,隻需要識别給定圖像中人臉的位置。

如果你想建立一個可以識别相機前面的人的實用的生物識别系統,首先需要運作一個人臉檢測器來識别人臉的位置,然後運作一個單獨的人臉識别器來識别該人是誰。有一個名為face的OpenCV子產品用于處理人臉識别。

正如我們之前讨論的那樣,計算機視覺試圖按照人類感覺視覺資料的方式對算法進行模組化。是以,在圖像中找到顯著的區域和對象将是有幫助的,這可以幫助我們處理不同的應用,例如目辨別别、目标檢測和跟蹤等。一個名為saliency的子產品是專門為此目的而設計的。它提供的算法可以檢測靜态圖像和視訊中的顯著區域。

1.3.13 表面比對

有越來越多的裝置能夠捕獲我們周圍對象的3D結構,這些裝置能夠捕獲深度資訊以及正常的2D彩色圖像。是以,建構可以了解和處理3D對象的算法對我們來說非常重要。

Kinect是捕獲深度資訊和視覺資料的一個很好的裝置例子,它現在能夠識别輸入的3D對象,并将其與資料庫中的模型比對。如果我們有一個可以識别和定位對象的系統,那麼它就可以用于許多不同的應用程式。

一個名為surface_matching的子產品包含用于3D對象識别的算法,以及使用3D特征的姿勢估計算法。

1.3.14 文本檢測和識别

識别給定場景中的文本并識别其内容變得越來越重要,其應用包括車牌識别、識别用于自動駕駛汽車的道路标志、将内容數字化的書籍掃描等。

一個名為text的子產品包含處理文本檢測和識别的各種算法。

1.3.15 深度學習

深度學習對計算機視覺和圖像識别有很大影響,并且比其他機器學習和人工智能算法具有更高的準确度。深度學習不是一個新概念;它在1986年左右被提出,但在2012年左右有了革命性進步,當時新的GPU硬體針對并行計算和卷積神經網絡(Convolutional Neural Network,簡稱CNN)實作進行了優化,加上其他技術,使得在合理的時間内訓練複雜的神經網絡架構成為可能。

深度學習可以應用于多種用例,例如圖像識别、目标檢測、語音識别和自然語言處理。從版本3.4開始,OpenCV一直在實作深度學習算法,在最新版本中,添加了諸如TensorFlow和Caffe等多個重要架構的導入器。

1.4 安裝OpenCV

讓我們看看如何在各種作業系統上安裝和運作OpenCV。

1.4.1 Windows

為簡單起見,我們使用預先建構的庫安裝OpenCV。請通路opencv.org并下載下傳适用于Windows的最新版本。目前版本是4.0.0,你可以從OpenCV首頁擷取下載下傳連結。在繼續之前,要確定你擁有管理者權限。

下載下傳的檔案是一個可執行檔案,是以隻需輕按兩下它即可開始安裝。安裝程式會将相關檔案安裝到一個檔案夾中。你可以選擇安裝路徑,并通過檢查檔案來檢查安裝。

完成上一步後,需要設定OpenCV環境變量,并把它們添加到系統路徑來完成安裝。我們将設定一個環境變量來儲存OpenCV庫的建構目錄,并在項目中使用它。

打開終端并鍵入以下内容:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

讓我們繼續,先将bin檔案夾的路徑添加到系統路徑中。這樣做的原因是我們将會以動态連結庫(DLL)的形式使用OpenCV庫。基本上,所有的OpenCV算法都存儲在這裡,作業系統隻會在運作時加載它們。

為此,作業系統需要知道它們的位置。PATH系統變量包含可以找到DLL的所有檔案夾的清單。是以,我們自然需要将OpenCV庫的路徑添加到此清單中。

為什麼需要做這一切?另一個選擇是将所需的DLL複制到應用程式的可執行檔案(.exe檔案)所在的相同檔案夾中。這是一個不必要的開銷,特别是當我們要處理許多不同的項目時。

我們需要編輯PATH變量來添加此檔案夾。你可以使用路徑編輯器等軟體執行此操作,可以從此處下載下傳:

https://patheditor2.codeplex.com

。安裝完成後,啟動軟體并添加以下新條目(你可以右鍵單擊路徑來插入新項目):

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

繼續并将其儲存到系統資料庫,至此,安裝完成!

1.4.2 Mac OS X

在本節中,我們将了解如何在Mac OS X上安裝OpenCV。預編譯的二進制檔案不适用于Mac OS X,是以我們需要從頭開始編譯OpenCV。

在繼續之前,我們需要安裝CMake。如果你尚未安裝CMake,可以從此處下載下傳:

https://cmake.org/files/v3.12/cmake-3.12.0-rc1-Darwin-x86_64.dmg

。這是一個.dmg格式的檔案,下載下傳完成後,隻需運作安裝程式即可。

從opencv.org下載下傳最新版本的OpenCV。目前版本是4.0.0,你可以從這裡下載下傳:

https://github.com/opencv/opencv/archive/4.0.0.zip

。請将它解壓縮到你選擇的檔案夾中。

OpenCV 4.0.0還有一個名為opencv_contrib的新軟體包,其中包含尚不穩定的使用者貢獻功能,以及一些在所有最新的計算機視覺算法中無法免費用于商業用途的算法,請記住這一點。安裝此軟體包是可選的,如果不安裝opencv_contrib,OpenCV也能正常工作。

因為我們必須安裝OpenCV,是以最好安裝這個軟體包,以便以後可以試用它(而不是再次完成整個安裝過程),這是學習和使用新算法的好方法。你可以從以下連結下載下傳它:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

請将zip檔案解壓縮到你選擇的檔案夾中。為友善起見,請将它解壓縮到與之前相同的檔案夾中,以便opencv-4.0.0和opencv_contrib-4.0.0檔案夾位于同一個主檔案夾中。

現在準備建構OpenCV。請打開終端并導航到存放OpenCV 4.0.0解壓縮檔案的檔案夾。在替換指令中的正确路徑後運作以下指令:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

下面開始安裝OpenCV 4.0.0。請轉至/full/path/to/opencv-4.0.0/build目錄,并在終端上運作以下指令:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

在上面的指令中,-j4标志表示它應該使用四個核心來安裝它。這種方式更快!現在,開始設定庫路徑。請使用vi~/.profile指令在終端中打開~/.profile檔案,并添加以下行:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

我們需要将opencv.pc中的pkgconfig檔案複制到/usr/local/lib/pkgconfig,并将其命名為opencv4.pc。這樣,如果你已經安裝了OpenCV 3.x.x,則不會發生沖突。讓我們繼續:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

我們還需要更新PKG_CONFIG_PATH變量。請打開~/.profile檔案并添加以下指令行:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

使用以下指令重新加載~/.profile檔案:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

大功告成!我們來看看它能否正常工作:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

如果在終端上看到歡迎使用OpenCV 4.0.0的字樣,那麼安裝成功。我們還将在本書中使用CMake建構OpenCV項目,我們會在第2章中更詳細地介紹它。

1.4.3 Linux

我們來看看如何在Ubuntu上安裝OpenCV,需要在開始之前安裝一些依賴項,請用包管理器在終端中運作以下指令來安裝它們:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

安裝了依賴項之後,請下載下傳、建構并安裝OpenCV:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

把opencv.pc中的pkgconfig檔案複制到/usr/local/lib/pkgconfig,并将其命名為opencv4.pc:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

完成了!現在可以用它從指令行編譯我們的OpenCV程式了。此外,如果你已經安裝了現有的OpenCV 3.x.x,也不會發生沖突。

我們來檢查安裝是否正常:

帶你讀《OpenCV 4計算機視覺項目實戰 (原書第2版)》之一:OpenCV入門第1章 OpenCV入門

如果在終端上看到歡迎使用OpenCV 4.0.0的字樣,那麼安裝成功。在接下來的章節中,我們将學習如何使用CMake建構OpenCV項目。

1.5 總結

在本章中,我們讨論了人類視覺系統,以及人類如何處理視覺資料。解釋了為什麼機器難以做到這一點,以及在設計計算機視覺庫時需要考慮的因素。

我們學習了使用OpenCV可以完成的工作,以及可用于完成這些任務的各種子產品。最後,學習了如何在各種作業系統中安裝OpenCV。

在下一章中,我們将讨論如何處理圖像以及如何使用各種函數操作圖像。我們還将學習如何為OpenCV應用程式建構項目結構。

繼續閱讀