[Scratch & Python] 在 MacOS 上安裝 OpenCV 3、Python 3、Numpy、PyAutoGui、Spyder 3、MSS === ## 第零步:了解如何使用 MacOS 內建 Terminal(終端機) 在 MacOS 中,系統有內建 Terminal(終端機),可用來執行各種有用的指令。在資訊領域,懂得利用 Terminal 可說是根本中的根本。 在 MacOS 中,終端機預設會在軟體選單的「其他」裡面,可以直接打開。(當然你也可以使用 MacOS 的 spotlight 功能,快速鍵 ⌘ + 空白鍵,直接鍵入「終端機」) ![在其他分頁裡面](https://i.imgur.com/mkSFmUf.jpg) ![Spotlight](https://i.imgur.com/Acn8B9G.png) 點開之後,會出現如下視窗: ![](https://i.imgur.com/miANcqF.png) 在這視窗中,會看到`zhouyuxinde-MacBook-Pro:~ yqkqknct$ `,`zhouyuxinde-MacBook-Pro` 會是你的電腦名稱,而 `yqkqknct` 會是你目前的使用者帳號。而在這個視窗中,就可以打入各式各樣的指令(之後各步驟都是指令,都要在終端機打入),打完之後按 return 即可執行。 > 順便推薦更好用的 Terminal 軟體:[iTerm2 - macOS Terminal Replacement](http://iterm2.com),支援分頁視窗、分割視窗等原生沒有的方便功能。 ## 第一步:安裝 Xcode(若已安裝,請跳過) Xcode 裡有許多與 C 語言相關的編譯器,為了確保順利安裝其他套件,建議先安裝好 Xcode。可以在 App Store 中直接安裝。 ![](https://i.imgur.com/fAW9ytH.png) 如果你不想要安裝完整版的 Xcode,也可以考慮安裝 Command Line Tools。在 Terminal 中執行: ``` xcode-select --install ``` ## 第二步:安裝 Homebrew(若已安裝,請跳過) [Homebrew](https://brew.sh/index_zh-tw.html) 是 macOS 上頗具盛名的套件管理工具,有許多實用的套件都可利用 [Homebrew](https://brew.sh/index_zh-tw.html) 來安裝、管理。我們會使用 [Homebrew](https://brew.sh/index_zh-tw.html) 來安裝 OpenCV、Numpy、Python。 ```bash /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ``` ## 第三步:安裝 Python 3 > 注意:若先前並非使用 Homebrew 安裝 Python 3(如透過官網下載等等),建議先移除電腦內的所有 Python 安裝,再使用 Homebrew 重裝一遍,以避免發生問題。 ```bash brew install python3 ``` ### 確認是否安裝成功 在 Terminal 中執行 `python3`,如果可以跑出如下圖的樣子就代表安裝成功。(圖中 Python 3.6.4,代表安裝的是 Python 3 版本系列,是本課程需要的) ![](https://i.imgur.com/k5Sfi7p.png) ## 第四步:安裝 [Numpy](http://www.numpy.org) 在 Terminal 中執行 ``` pip3 install numpy ``` 以安裝 Numpy,也這是 OpenCV 的前置套件。 ## 第五步:安裝 [OpenCV 3](https://opencv.org) > 注意:OpenCV 由於功能非常龐大、厲害,其關聯的套件也非常多。以下的步驟不保證能夠安裝成功,安裝是否會成功仍會取決於原本電腦中的環境狀況。如果照著本篇文章無法安裝成功,文末會提供一些我認為值得參考的網路教學文章,可先參考。如果嘗試過後仍舊無法安裝成功,再與助教聯繫求助。 首先,在 Terminal 中執行以下以安裝 OpenCV 3: ```bash brew install opencv3 --with-python3 --with-contrib ``` 此套件較複雜,可能需要較多時間下載。 ### 檢查是否安裝成功 一樣先執行 `python3` 指令,接著試著匯入 OpenCV:(如果你很好奇為何是 cv2,請看[這篇文章](http://answers.opencv.org/question/63405/why-do-python-bindings-for-v3-still-use-package-name-cv2/)) ```bash import cv2 ``` 如果沒有錯誤,如下圖,代表安裝成功! ![](https://i.imgur.com/RzjAAjw.png) 另外,你也可以輸入 ``` cv2.__version__ ``` 來看看你安裝好 OpenCV 的版本,應該會得到 3.4。 ### 可參考文章 - [Setting up OpenCV for Python 3 on macOS Sierra with 5 easy steps](https://medium.com/@satchitananda/setting-up-opencv-for-python-3-on-macos-sierra-with-5-easy-steps-647b64c5e0c9) - [opencv3: --with-python3 doesn't work #5463](https://github.com/Homebrew/homebrew-science/issues/5463) - [MacOS为Python3安装OpenCV3](https://qinjiangbo.com/install-opencv3-for-python-on-mac.html) - [mac上安装python3和opencv3](https://www.jianshu.com/p/ee2c414856b7) ## 第六步:安裝 [PyAutoGui](http://pyautogui.readthedocs.io/en/latest/) 打開 Terminal,依序執行 ``` pip3 install pyobjc-core ``` ``` pip3 install pyobjc ``` ``` pip3 install pyautogui ``` ### 確認是否安裝成功 同樣執行 `python3`,接著打入 `import pyautogui`,若沒有錯誤即表示安裝成功,如下圖: ![](https://i.imgur.com/HVtqBKT.png) ## 第八步:安裝 [MSS](http://python-mss.readthedocs.io/installation.html) 打開 Terminal,執行 ``` pip3 install --upgrade mss ``` ### 確認是否安裝成功 打開 Terminal,執行 `python3`,接著打入 `import mss`,若沒有錯誤即表示安裝成功,如下圖: ![](https://i.imgur.com/rJLhfI6.png) ## 第七步:安裝 [Spyder 3](https://github.com/spyder-ide/spyder/releases) 打開 Terminal,執行 ``` pip3 install -U spyder ``` ### 確認是否安裝成功 打開 Terminal,執行 `spyder3`,會出現一個視窗軟體,就代表安裝成功。如下圖: ![](https://i.imgur.com/uZ11whR.png) ![](https://i.imgur.com/5xvVPCd.png) ## 最終步:確認是否都安裝成功 可在剛才打開的 Spyder 3 中,右下方分別輸入 `import cv2`、`import numpy`、`import pyautogui`、`import mss`,如果都沒有錯誤就代表安裝成功了!如下圖: ![](https://i.imgur.com/nmNTI01.png) 當然你也可以在 Terminal 中也測試一遍: ![](https://i.imgur.com/lCLaMZ0.png) ## 試跑 Google 小恐龍 Agent 到[課程網頁](https://github.com/mzshieh/snp2018)下載,我們要使用的小程式位於 dino 資料夾內。**請記得也要下載 dino 資料夾裡的小恐龍圖片,用來比對用!** 找到剛才下載的檔案,打開 dino 資料夾,在 `detect.py` 檔案上按右鍵 → 詳細資訊,把「位置:」後面的東西都複製起來: ![](https://i.imgur.com/XeztRD2.png) 接著,在 Terminal 中打入(請將 `/Users/yqkqknct/Downloads/snp2018-master/dino` 改成你剛才複製的內容): ``` cd /Users/yqkqknct/Downloads/snp2018-master/dino ``` `cd + 路徑` 代表把當前終端機所在位置,切換到給定的路徑中(在這裡就是 dino 資料夾內)。接著執行 ``` python3 detect.py ``` 表示用 Python 3 執行 `detect.py` 這個 Python 3 程式。接著斷開網路後,打開 Chrome 就可以開始玩這個遊戲。`detect.py` 會打開一個不停地做螢幕截圖的視窗,你可以發現他會找出小恐龍的位置,並用綠色框標注起來。 ![](https://i.imgur.com/LYhUSHn.png) > 也可以直接使用線上版的此遊戲:[Dinosaur Jump](http://www.trex-game.skipser.com/) ## 如果發生問題 如果遭遇任何錯誤訊息,建議先將錯誤訊息拿去 Google 看看是否有解法;如果嘗試許久仍無法解決,請聯繫 TA:周玉鑫 yqkqknct@gmail.com,詳述錯誤訊息與截圖,或課後來詢問。