《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 人臉偵測 |
| 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 模型檔,因此兩件事都要補:- 安裝擴充套件:依照書中 21-1-1 節的說明安裝 opencv-contrib-python,基礎環境才會有 Haar Cascade 的函式可用。
- 下載模型檔並修改路徑:執行範例檔中的 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 個生活實戰專案收尾:
- 讓電腦自己玩遊戲!挑戰 Chrome 小恐龍(傳統 CV 自動化)
- 當電腦學會「看懂」遊戲:自動玩 2048(影像辨識 + 決策)
- 刷臉就開門?自製居家智慧人臉門禁(人臉辨識 + 即時通知實戰)
- 貓咪偷進廚房怎麼辦?自製智慧寵物攝影機(物件偵測 + 即時通知實戰)
- 動手做自己的簡易版 Photoshop!(OpenCV + 介面整合)
書籍介紹影片
想快速了解這本書在幹嘛,可以直接看出版社做的介紹影片:
購買資訊
- 出版社:旗標科技
- 上市日期:2026/07/08
- 購買通路(各大書店均有):
- 📕 博客來
- 📗 誠品線上
- 📘 金石堂
- 💻 天瓏網路書店
- 📙 三民網路書店
- 📒 TAAZE 讀冊生活
- 🛒 momo 購物網
- 🛍️ PChome 24h 購物
📖 如果你是不小心點進來的網友:這頁是書本附錄頁,主要是放範例程式碼下載連結、提供讀者勘誤與交流區。對書有興趣的話,可以從上面的銷售連結找到實體書。
範例程式碼下載
書中所有章節範例程式碼(Jupyter Notebook)與 5 個生活實戰專案的完整 Python 程式,同步在以下兩個地方提供,可自由選擇下載方式:
方式一:GitHub Repository(推薦)
可以直接 git clone 或下載 ZIP,未來有更新(包含勘誤、額外範例)會優先同步到這裡。
🔗 GitHub repo:github.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-python、matplotlib 等)
- 第 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-17 | 8-5 節 Gamma 矯正的執行結果圖,圖片標題誤植為「Gamma=0.8」,應為「Gamma=0.5」 |
| 19-13 | 「推理(Inference):是拿訓練好的模型……」應為「推論(Inference)……」 |
(持續更新中,如果讀者發現上表以外的其他錯誤,非常歡迎透過下方留言告訴我!非常感謝!)
提問 / 交流
除了回報上表以外的錯誤,如果你對書中內容有不清楚的地方、或單純有問題想問,歡迎在下方留言區留言(會用網站既有的 Disqus 系統,登入 Disqus / Google / Facebook / Twitter 任一帳號即可)。
也可以透過 email 直接聯繫:howarder3@gmail.com
也歡迎到 GitHub repo 開 Issue 回報。
如果你用書裡學到的技術做出了自己的作品,超歡迎也回來這頁留言分享 — 那會是這本書帶給站長最大的成就感。