- 機器學習:使用OpenCV、Python和scikit-learn進行智能圖像處理(原書第2版)
- (印)阿迪蒂亞·夏爾馬 維什韋什·拉維·什里馬利 (美)邁克爾·貝耶勒
- 2837字
- 2020-11-24 18:12:55
1.6 安裝
在開始之前,讓我們確保已經安裝創建一個功能完整的數據科學環境所需的所有工具和庫。在從GitHub下載了本書的最新代碼之后,我們將安裝以下軟件:
- Python的Anaconda發行版,基于Python 3.6或更高版本。
- OpenCV 4.1。
- 一些支持包。
提示
不想安裝這些內容的話,你可以訪問https://mybinder.org/v2/gh/PacktPublishing/Machine-Learning-for-OpenCV-Second-Edition/master,由于Binder項目,你可以在該網站的一個交互式文件中找到本書的所有代碼、可執行環境,以及完全免費的開源代碼。
1.6.1 獲取本書的最新代碼
你可以從GitHub https://github.com/PacktPublishing/Machine-Learning-for-OpenCV-Second-Edition獲取本書的最新代碼。你也可以下載一個.zip包(初學者)或者使用Git的克隆庫(中級用戶)。
注意
Git是一個版本控制系統,允許你追蹤文件中的更改和與他人協作編寫代碼。此外,網絡平臺GitHub讓人們在一個公共服務器上與你分享他們的代碼變得很容易。當作者對代碼進行改進時,你可以輕松地更新本地副本、文件錯誤報告,或者建議代碼更改。
如果你選擇使用git,第一步是確保安裝了它(https://git-scm.com/downloads)。
然后,打開一個終端(或者命令提示符,因為在Windows中要調用命令提示符):
- 在Windows 10上,右鍵單擊“開始”菜單按鈕,然后選擇Command Prompt。
- 在macOS X上,按下Cmd+Space打開spotlight搜索,然后鍵入terminal,再按下Enter。
- 在Ubuntu、Linux/Unix及其相關系統上按下Ctrl+Alt+T。在Red Hat上,在桌面上按一下鼠標右鍵,從菜單選擇Open Terminal。
導航到你希望保存下載代碼的目錄:

然后,你可以通過輸入下列代碼獲取最新代碼的本地副本:

這會將下載的最新代碼保存在一個名為OpenCV-ML的文件夾中。
一段時間后,代碼可能會在線更改。在這種情況下,在OpenCV-ML目錄中運行下列命令,你可以更新本地副本:

1.6.2 了解Python的Anaconda發行版
Anaconda是由Continuum Analytics開發的用于科學計算的一個免費Python發行版。Anaconda可以在Windows、Linux和macOS X平臺上工作,而且是免費的,甚至可以用于商業用途。然而,Anaconda最好的地方在于它附帶了大量對數據科學、數學和工程學來說必不可少的預安裝包。這些預安裝包包括以下內容:
- NumPy:Python中用于科學計算的一個基本包,提供了多維數組、高級數學函數和偽隨機數生成器等功能。
- SciPy:Python中用于科學計算的一個函數集合,提供了高級線性代數例程、數學函數優化、信號處理等。
- scikit-learn:Python中的一個開源機器學習庫,提供了OpenCV缺少的有用的輔助函數和基礎架構。
- Matplotlib:Python中的主要科學繪圖庫,提供了生成折線圖、直方圖、散點圖等功能。
- Jupyter Notebook:用于在Web瀏覽器中運行代碼的一個交互式環境,其中還包括markdown功能,有助于維護良好的注釋和詳細的項目筆記。
我們所選平臺(Windows、macOS X或者Linux)的安裝程序可以在Continuum網站(https://www.anaconda.com/download)找到。本書推薦使用基于Python 3.6的發行版,因為Python 2不再是活躍的開發平臺。
要運行安裝程序,請執行下面的一個操作:
- 在Windows上,雙擊.exe文件并按照屏幕上的說明操作。
- 在macOS X上,雙擊.pkg文件并按照屏幕上的說明操作。
- 在Linux上,打開一個終端,并使用bash運行.sh腳本,如下所示:

此外,Python Anaconda附帶了conda——一個簡單的包管理器,類似于Linux上的apt-get。安裝成功之后,我們可以在終端輸入下列命令,安裝新的包:

這里,package_name是我們要安裝包的實際名稱。
使用下列命令可以更新現有的包:

我們還可以使用下列命令搜索包:

這將彈出開發人員使用的一個完整的包列表。例如,搜索一個名為opencv的包,我們得到的結果如圖1-3所示。

圖1-3 搜索名為opencv的包,我們得到的搜索結果
這將彈出一長串已經安裝了OpenCV包的一個用戶列表,允許我們找到在平臺上安裝了我們版本軟件的用戶。然后,我們可以安裝來自user_name用戶中的一個名為package_name的包,安裝命令如下:

最后,conda提供了一個名為environment的東西,它允許我們管理在其內安裝的Python和包的各種版本。這意味著我們可以擁有一個獨立的環境,包含運行OpenCV 4.1和Python 3.6所需的所有包。在1.6.3節,我們將創建一個環境,包含運行本書中代碼所需的所有包。
1.6.3 在conda環境中安裝OpenCV
我們將執行以下步驟來安裝OpenCV:
1)在一個終端,導航到下載以下代碼的目錄:

2)然后,運行下列命令,基于Python 3.6創建一個conda環境,還將安裝environment.yml文件(可以在GitHub庫中獲取)中列出的所有必要的包:

3)你還可以瀏覽以下environment.yml文件:

注意
請注意,環境名將是OpenCV-ML。這段代碼將使用conda-forge通道下載所有基于conda的依賴項,并使用pip安裝OpenCV 4.0(以及opencv_contrib)。
4)要激活該環境,請根據你的平臺輸入下列選項之一:

5)我們在關閉終端時將會停用該會話——因此在下次打開一個新的終端時,我們將不得不再次運行這最后一條命令。我們還可以手動關閉環境:

完成后,讓我們驗證一下是否成功地安裝了所有這些內容。
1.6.4 安裝驗證
最好再仔細檢查一下我們的安裝。在我們的終端還處于打開狀態時,啟動IPython,這是運行Python命令的一個交互式shell:

接下來,請確保你(至少)正在運行的是Python 3.6,而不是Python 2.7。你可能會在IPython的歡迎信息中看到版本號。如果沒看到版本號,你可以運行下列命令:

現在,試著導入OpenCV,如下所示:

你應該不會得到錯誤消息。然后,試著找到類似這樣的版本號:

請確保讀取的OpenCV版本號為4.0.0;否則,稍后你將無法使用某些OpenCV的功能。
注意
OpenCV 3實際上稱為cv2。這會讓人感到困惑。顯然,這是因為2并不代表版本號。相反,這是為了強調底層C API(用前綴cv表示)和C++ API(用前綴cv2表示)之間的不同。
然后,你可以通過輸入exit或按下Ctrl+D并確認你想退出,從而退出IPython shell。
另外,因為有了Jupyter Notebook,你可以在web瀏覽器中運行這些代碼了。如果你之前從未聽說過Jupyter Notebook或從未使用過它,請相信我——你會喜歡上它!如果你按照前面介紹的說明安裝了Python Anaconda棧,那么Jupyter已經安裝完畢,那就整裝待發吧。在一個終端,輸入

這將自動打開一個瀏覽器窗口,顯示當前目錄中的一個文件列表。單擊OpenCV-ML文件夾,再單擊notebooks文件夾,瞧!在圖1-4中你會找到這本書的所有代碼,準備好探索吧。

圖1-4 Jupyter notebooks文件夾中的所有代碼
notebooks中的內容是按照章節排列的。在大多數情況下,它們只包含相關的代碼,沒有附加信息或解釋。這些都是為那些通過購買本書支持我們的讀者準備的——感謝你們!
只單擊你選擇的一個notebook,例如01.00-A-Taste-of-Machine-Learning.ipynb,選擇Kernel | Restart | Run All,你就能夠自己運行代碼,如圖1-5所示。

圖1-5 選擇要運行的代碼界面
有一些方便的快捷鍵用于導航到Jupyter Notebooks。可是,你現在只需要了解以下幾點:
1)單擊一個單元格(在圖1-4中的突出顯示區域——將該區域命名為一個單元格),以便對其進行編輯。
2)在選中單元格后,按下Ctrl+Enter,執行單元格內的代碼。
3)或者,按下Shift+Enter,執行一個單元格,并選擇它下方的單元格。
4)按下Esc退出寫入模式,然后按下A,在當前選中的單元格上方插入一個單元格,按下B,在當前選中的單元格下方插入一個單元格。
提示
單擊“Help | Keyboard Shortcut”,檢查所有的鍵盤快捷鍵,或者單擊“Help | User Interface Tour”進行快速瀏覽。
但是,強烈建議你按照本書的要求,最好是在IPython shell或一個空白的Jupyter Notebook中親自動手輸入命令。學習編程最好的方法就是親自動手實踐。如果你犯了錯誤就更好了——我們都有過這樣的經歷。這就是在實踐中學習!
1.6.5 OpenCV的ml模塊概覽
從OpenCV 3.1開始,OpenCV中與機器學習有關的所有函數都被歸類到ml模塊了。很長一段時間以來,C++ API一直都是這樣的。通過在ml模塊中顯示所有的函數,你可以大致了解相關內容:

提示
如果你安裝過OpenCV的一個老版本,那么可能還不存在ml模塊。例如,k近鄰算法(我們將在第3章中介紹)在過去稱為cv2.KNearest ( ),但是現在稱為cv2.ml.KNearest_create ( )。本書為了避免混淆,推薦使用OpenCV 4.0。
這些都很好,但是你現在會想:為什么要學習機器學習呢?機器學習的應用是什么呢?讓我們在1.7節回答這個問題。
- 卡通風格原畫繪制(下)
- WOW!Photoshop+Illustrator特效設計
- 在你身邊,為你設計:騰訊的用戶體驗設計之道(第二版)
- Photoshop CS6中文版完全學習手冊
- 視界·無界:寫給UI設計師的設計書(全彩)
- 3ds Max效果圖制作基礎教程
- 科研論文配圖繪制指南:基于R語言
- 創意UI:Photoshop玩轉App設計(第2版)
- Dreamweaver CS6標準培訓教程
- 攝影師的后期課:影調與調色篇(修訂版)
- CorelDRAW X6技術大全
- 短視頻拍攝與制作(微課版)
- 好學、好用、好玩的Photoshop 寫給初學者的入門書(第2版)
- Unity 3D 完全自學教程
- Flash 8商業案例精粹(中文版)