《OpenCV 全攻略!》範例程式碼與讀者交流專頁

《OpenCV 全攻略!AI 影像辨識 × 電腦視覺實戰手冊》— OpenCV 入門實戰書,範例程式碼下載(GitHub + Google Drive)、章節資料夾架構與讀者勘誤交流區。

《OpenCV 全攻略!AI 影像辨識 × 電腦視覺實戰手冊》

《OpenCV 全攻略!AI 影像辨識 × 電腦視覺實戰手冊》書封

【重要】關於 OpenCV 5.0.0 版本對本書範例的影響

本書所有範例以 OpenCV 4.13.0 版本進行撰寫與驗證(第 1 章有列出本書使用的完整套件版本)。

若讀者現在直接執行 pip install opencv-python預設會安裝到 OpenCV 5.0.0 版本。而 OpenCV 5.0.0 版本後,有幾項變更會讓第 20、21 章的部分範例因為過時而產生錯誤

影響的範例OpenCV 5.0.0 版本後的變更讀者會看到的錯誤
20-2
Haar Cascade 人臉偵測
  1. Haar Cascade 的函式移至擴充套件
    (基礎環境的 opencv-python 不再提供 cv2.CascadeClassifier
  2. 安裝套件不再附帶 Haar Cascade 的 XML 模型檔
AttributeError: module 'cv2' has no attribute 'CascadeClassifier'
21-2-4 ~ 21-2-6、21-E
使用 Haar 的部分
安裝套件不再附帶 Haar Cascade 的 XML 模型檔
cv2.data.haarcascades 資料夾內已無 XML 檔)
第 21 章已安裝擴充套件,函式本身沒有問題
error: (-215:Assertion failed) !empty()
20-3
SSD 人臉偵測
移除 Caffe 模型支援
cv2.dnn.readNetFromCaffe 函式已無法使用)
AttributeError: module 'cv2.dnn' has no attribute 'readNetFromCaffe'

其餘範例皆不受影響,在 OpenCV 5.0.0 版本上都能正常執行。第 21 章的 LBPH 演算法本身也完全正常,受影響的只是前置搭配使用的傳統 Haar Cascade 人臉偵測器。

✅ 解法一(推薦):安裝本書使用的 OpenCV 4.13.0 版本

若讀者想要完全依照書中的範例進行實作,只需要在安裝 OpenCV 的指令後面補上版本號即可:

# 第 1 章的基礎環境
pip install opencv-python==4.13.0.92

# 第 21、23 章的擴充套件環境
pip install opencv-contrib-python==4.13.0.92

⚠️ 注意 pip 的版本號是四段4.13.0.92,若寫成「==4.13.0」會出現「找不到套件」的錯誤。安裝完成後可執行「print(cv2.__version__)」確認顯示為「4.13.0」。

✅ 解法二:直接使用 OpenCV 5.0.0 版本

如果讀者想直接使用最新的 OpenCV 5.0.0 版本,第 20、21 章的範例可以這樣處理:

  • 20-2 Haar Cascade:可正常使用,但需要完成兩個步驟。
    第 20 章使用的是第 1 章建立的基礎環境,而 OpenCV 5.0.0 版本把 Haar Cascade 的函式移到了擴充套件,也不再附帶 XML 模型檔,因此兩件事都要補:

    1. 安裝擴充套件:依照書中 21-1-1 節的說明安裝 opencv-contrib-python,基礎環境才會有 Haar Cascade 的函式可用。
    2. 下載模型檔並修改路徑:執行範例檔中的 ch20-人臉偵測_模型下載.ipynb,模型會存放於 models/ 資料夾,接著將書中程式的模型路徑改為:
    face_cascade = cv2.CascadeClassifier('models/haarcascade_frontalface_default.xml')
    

    兩個步驟都完成後即可正常執行(已於 OpenCV 5.0.0 版本的環境實測通過)。

  • 20-3 SSD:無法使用。
    OpenCV 5.0.0 版本已完全移除 Caffe 模型的支援(官方的錯誤訊息為 Caffe importer has been removed),沒有任何替代寫法可以繞過。讀者若想實作此範例,只能安裝 OpenCV 4.13.0 版本

  • 20-4 YuNet:可正常使用,不需任何修改。
    YuNet 是本書在第 20 章中最推薦的方法(速度與精準度都優於前兩者);第 21 章的 SFace 人臉辨識、專案 03 人臉門禁也都是以 YuNet 為基礎,皆不受影響。

  • 21-2-4 ~ 21-2-6、21-E:只需要補上模型檔。
    第 21 章使用的已經是 21-1-1 節建立的 opencv-contrib-python 環境,Haar Cascade 的函式本來就有,只缺 XML 模型檔。這幾個範例採用的是「傳統搭配傳統」的組合:先用 Haar Cascade 偵測人臉,再把偵測到的人臉交給 LBPH 辨識。因此模型檔一缺,這些範例會卡在最前面的偵測階段,後段的辨識輪不到執行。需要調整的只有偵測器的模型路徑:

    cv2.CascadeClassifier('models/haarcascade_frontalface_default.xml')
    

    模型檔沿用第 20 章下載的那一份,不需重新下載。改好路徑後即可正常執行(已於 OpenCV 5.0.0 版本的環境實測,訓練與辨識皆通過)。

Haar Cascade(20-2)與 SSD(20-3)雖然都是相對早期的技術,但這兩節能幫助讀者大致理解人臉偵測技術的演進過程。SSD 無法使用,是因為它採用的是 Caffe 格式的模型。Caffe 是早期相當常見的深度學習框架,但近年已逐漸被取代,模型格式的主流也轉向了 ONNX,因此 OpenCV 在 5.0.0 版本便不再支援讀取 Caffe 格式的模型。

如果想要親手實驗、感受三種方法在速度與精準度上的演進與差異,可依照「解法一」安裝 OpenCV 4.13.0 版本。


從傳統影像處理到 AI 影像辨識,讓你擁有獨立開發電腦視覺應用的能力!

這本書從 OpenCV 基本影像處理、傳統電腦視覺技術,一路帶到 AI 影像辨識(人臉偵測、人臉辨識、物件偵測、物件追蹤),最後以 5 個生活實戰專案收尾:

  1. 讓電腦自己玩遊戲!挑戰 Chrome 小恐龍(傳統 CV 自動化)
  2. 當電腦學會「看懂」遊戲:自動玩 2048(影像辨識 + 決策)
  3. 刷臉就開門?自製居家智慧人臉門禁(人臉辨識 + 即時通知實戰)
  4. 貓咪偷進廚房怎麼辦?自製智慧寵物攝影機(物件偵測 + 即時通知實戰)
  5. 動手做自己的簡易版 Photoshop!(OpenCV + 介面整合)

書籍介紹影片

想快速了解這本書在幹嘛,可以直接看出版社做的介紹影片:


購買資訊

📖 如果你是不小心點進來的網友:這頁是書本附錄頁,主要是放範例程式碼下載連結、提供讀者勘誤與交流區。對書有興趣的話,可以從上面的銷售連結找到實體書。


範例程式碼下載

書中所有章節範例程式碼(Jupyter Notebook)與 5 個生活實戰專案的完整 Python 程式,同步在以下兩個地方提供,可自由選擇下載方式:

方式一:GitHub Repository(推薦)

可以直接 git clone 或下載 ZIP,未來有更新(包含勘誤、額外範例)會優先同步到這裡。

🔗 GitHub repogithub.com/howarder3/opencv-book

方式二:Google Drive 雲端硬碟

不熟悉 Git 的讀者可直接從雲端下載完整 ZIP。

🔗 雲端硬碟連結drive.google.com(點進去後下載 OpenCV全攻略-範例檔.zip


章節與資料夾架構

下載解壓縮後,資料夾結構如下:

OpenCV全攻略-範例檔/
├── ch01-OpenCV 影像讀取、顯示與儲存.ipynb
├── ch02-數位影像的基礎.ipynb
├── ch03-認識 OpenCV 中的影像與色彩.ipynb
├── ch04-OpenCV 影像變形處理.ipynb
├── ch05-OpenCV 影像繪製與標註.ipynb
├── ch06-OpenCV 影像數學運算.ipynb
├── ch07-OpenCV 影像模糊、銳化與馬賽克.ipynb
├── ch08-OpenCV 影像色彩與光影調校.ipynb
├── ch09-OpenCV 影像二值化.ipynb
├── ch10-OpenCV 形態學運算.ipynb
├── ch11-OpenCV 邊緣偵測.ipynb
├── ch12-OpenCV 輪廓分析.ipynb
├── ch13-OpenCV 影像分割.ipynb
├── ch14-OpenCV 模板匹配.ipynb
├── ch15-OpenCV 特徵偵測與匹配.ipynb
├── ch16-OpenCV 視窗與使用者互動.ipynb
├── ch17-OpenCV 影片處理.ipynb
├── ch18-OpenCV 攝影機即時影像分析.ipynb
├── ch20-OpenCV 人臉偵測.ipynb
├── ch20-人臉偵測_模型下載.ipynb              # 第 20 章預訓練模型下載工具
├── ch21-OpenCV 人臉辨識.ipynb
├── ch21-人臉辨識_模型下載.ipynb              # 第 21 章預訓練模型下載工具
├── ch22-OpenCV 物件偵測.ipynb
├── ch23-OpenCV 物件追蹤.ipynb
├── P01_dino_cv_auto/        # 專案 01:讓電腦自己玩遊戲!挑戰 Chrome 小恐龍
├── P02_auto_2048_solver/    # 專案 02:當電腦學會「看懂」遊戲:自動玩 2048
├── P03_face_door/           # 專案 03:刷臉就開門?自製居家智慧人臉門禁
├── P04_pet_monitor/         # 專案 04:貓咪偷進廚房怎麼辦?自製智慧寵物攝影機
├── P05_mini_photoshop/      # 專案 05:動手做自己的簡易版 Photoshop!
├── sample/                  # 全書跨章節共用的範例影像 / 影片素材
├── opencv_tools.py          # 第 1 章封裝、全書通用的影像顯示工具模組
├── README.md
└── LICENSE

第 0 章「建置 OpenCV 開發環境」與第 19 章「從「傳統影像處理」邁向「AI 影像辨識」的 OpenCV」皆為無程式碼的章節(第 0 章為環境安裝說明、第 19 章為純概念過渡),因此沒有對應的 Jupyter Notebook,相關內容請參閱書中內文。


預訓練模型下載

書的後半段(第 20–23 章、專案 03、專案 04)會用到 Haar Cascade、SSD、YuNet、SFace、YOLOv8 等預訓練模型。模型檔案沒打包進範例檔,原因是檔案多半較大、各自有授權條款。

每個會用到模型的章節,書中內文都附了下載連結,範例檔也提供「模型下載 Notebook」(檔名格式 chXX-XXXX_模型下載.ipynb),直接執行就會把當章需要的模型抓好。

YOLOv8 weights(第 22、23 章與專案 04 用到)會由 ultralytics 套件自動下載,不需手動處理。


開發環境

本書以 Anaconda 管理 Python 環境,依章節需求建立不同的獨立環境(避免套件衝突)。完整安裝步驟、套件相依性說明、各環境用途請參閱書中對應章節

  • 第 0 章:Anaconda 安裝、JupyterLab 設定、第一個 Python 環境建立
  • 第 1 章:OpenCV 基礎環境的套件安裝(opencv-pythonmatplotlib 等)
  • 第 21 章:人臉辨識所需的 opencv-contrib-python 環境(含 cv2.face 模組)
  • 第 22 章:物件偵測所需的 ultralytics(YOLOv8)環境
  • 第 23 章:物件追蹤所需的混合環境(含 opencv-contrib-python + ultralytics 兩者並存的安裝順序處理)

⚠️ AI 章節的 3 個環境(opencv-contrib-python / ultralytics / 兩者並存)各自的相依性處理略有不同,請依各章節 Step-by-step 指示建立,不要自行合併安裝。


授權與使用提醒

  • 範例檔內的軟體、模型與素材皆屬原作者所有,僅提供本書讀者學習練習用。其他用途請依各個工具或模型本身的授權條款處理。使用過程中若發生任何錯誤或損失,作者與出版商不負相關責任。

  • 特別提醒:書中的自動化遊戲專案(專案 01、02)僅供技術學習示範。若將相關技術應用至其他遊戲(線上、手機等各類遊戲),可能違反該遊戲的服務條款而導致帳號被封鎖等後果,相關責任請讀者自行承擔。


書籍勘誤區

以下整理目前已發現的小錯誤,供讀者對照:

頁碼勘誤內容
2-8「雖然左圖……」應為「雖然上圖……」
4-27「點擊的座標(15-4 節)」應為「點擊的座標(16-4 節)」
8-178-5 節 Gamma 矯正的執行結果圖,圖片標題誤植為「Gamma=0.8」,應為「Gamma=0.5
19-13推理(Inference):是拿訓練好的模型……」應為「推論(Inference)……」

(持續更新中,如果讀者發現上表以外的其他錯誤,非常歡迎透過下方留言告訴我!非常感謝!)


提問 / 交流

除了回報上表以外的錯誤,如果你對書中內容有不清楚的地方、或單純有問題想問,歡迎在下方留言區留言(會用網站既有的 Disqus 系統,登入 Disqus / Google / Facebook / Twitter 任一帳號即可)。

也可以透過 email 直接聯繫:howarder3@gmail.com

也歡迎到 GitHub repo 開 Issue 回報。

如果你用書裡學到的技術做出了自己的作品,超歡迎也回來這頁留言分享 — 那會是這本書帶給站長最大的成就感。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 建立
主題 StackJimmy 設計