OpenCV 4 計算機視覺:Python 語言實現 (Learning OpenCV 4 Computer Vision with Python 3, 3/e)

Joseph Howse , Joe Minichino 譯 劉冰,高博

買這商品的人也買了...

商品描述

本書首先介紹OpenCV 4以及如何基於Python 3在各種平台上安裝OpenCV 4。
接下來,你將學習如何執行讀取、寫入、操縱,以及顯示靜態圖像、視頻和攝像機回饋等基本操作。
你還將學習圖像處理、視頻分析、深度估計和分割,並通過構建一個簡單的GUI應用程序獲得實踐經驗。
接下來,你將處理兩類常見問題:人臉檢測和人臉識別。
你還將學習物體分類和機器學習的概念,
這將使你能夠創建和使用物體檢測器和分類器,甚至跟踪電影或攝像機回饋中的物體。
稍後,你將學習3D跟踪和增強現實。
本書末尾,你將學習人工神經網絡和深度神經網絡,
學習如何開發手寫數字識別以及對人的性別和年齡分類的應用程序。

目錄大綱

譯者序
前言
作者簡介
審校者簡介
第1章 安裝OpenCV 1
1.1 技術需求 2
1.2 OpenCV 4有哪些新特性 2
1.3 選擇和使用合適的安裝工具 3
1.3.1 在Windows上安裝 3
1.3.2 在macOS上安裝 7
1.3.3 在Debian、Ubuntu、Linux Mint以及類似系統上安裝 8
1.3.4 在其他類UNIX系統上安裝 11
1.4 運行示例 12
1.5 查找文檔、幫助和更新 13
1.6 本章小結 13

第2章 處理文件、攝像頭和GUI 14
2.1 技術需求 14
2.2 基本I/O腳本 14
2.2.1 讀取/寫入圖像文件 15
2.2.2 在圖像和原始字節之間進行轉換 17
2.2.3 基於numpy.array訪問圖像數據 19
2.2.4 讀取/寫入視頻文件 21
2.2.5 捕捉攝像頭幀 22
2.2.6 在窗口中顯示圖像 23
2.2.7 在窗口中顯示攝像頭幀 24
2.3 項目Cameo(人臉跟踪和圖像處理) 25
2.4 Cameo:面向對象的設計 26
2.4.1 基於managers.CaptureManager提取視頻流 26
2.4.2 基於managers.WindowManager提取窗口和鍵盤 30
2.4.3 基於cameo.Cameo應用所有內容 31
2.5 本章小結 33

第3章 基於OpenCV的圖像處理 34
3.1 技術需求 34
3.2 在不同顏色模型之間進行圖像轉換 34
3.3 探索傅里葉變換 35
3.4 創建模塊 38
3.5 邊緣檢測 38
3.6 自定義核:獲取卷積 39
3.7 修改應用程序 41
3.8 基於Canny的邊緣檢測 43
3.9 輪廓檢測 43
3.9.1 邊框、最小矩形區域以及最小外接圓 44
3.9.2 凸輪廓和Douglas-Peucker算法 46
3.10 檢測線、圓以及其他形狀 48
3.10.1 檢測線 48
3.10.2 檢測圓 49
3.10.3 檢測其他形狀 50
3.11 本章小結 50

第4章 深度估計和分割 51
4.1 技術需求 51
4.2 創建模塊 52
4.3 從深度攝像頭捕捉幀 52
4.4 將10位圖像轉換成8位圖像 54
4.5 由視差圖創建掩模 56
4.6 修改應用程序 57
4.7 基於普通攝像頭的深度估計 59
4.8 基於GrabCut算法的前景檢測 64
4.9 基於分水嶺算法的圖像分割 67
4.10 本章小結 69

第5章 人臉檢測和識別 70
5.1 技術需求 71
5.2 Haar級聯的概念化 71
5.3 獲取Haar級聯數據 72
5.4 使用OpenCV進行人臉檢測 72
5.4.1 在靜態圖像上進行人臉檢測 73
5.4.2 在視頻上進行人臉檢測 74
5.4.3 進行人臉識別 77
5.5 在紅外線下換臉 83
5.5.1 修改應用程序的循環 84
5.5.2 掩模複製操作 86
5.6 本章小結 88

第6章 使用圖像描述符檢索和搜索圖像 89
6.1 技術需求 89
6.2 理解特徵檢測和匹配的類型 90
6.3 檢測Harris角點 90
6.4 檢測DoG特徵並提取SIFT描述符 92
6.5 檢測快速Hessian特徵並提取SURF描述符 95
6.6 使用基於FAST特徵和BRIEF描述符的ORB 96
6.6.1 FAST 97
6.6.2 BRIEF 97
6.6.3 蠻力匹配 98
6.6.4 匹配兩幅圖像中的標識 98
6.7 使用K最近鄰和比率檢驗過濾匹配 101
6.8 基於FLANN的匹配 104
6.9 基於FLANN進行單應性匹配 107
6.10 示例應用程序:文身取證 110
6.10.1 將圖像描述符保存到文件 110
6.10.2 掃描匹配 111
6.11 本章小結 114

第7章 建立自定義物體檢測器 115
7.1 技術需求 115
7.2 理解HOG描述符 116
7.2.1 HOG的可視化 116
7.2.2 使用HOG描述圖像的區域 117
7.3 理解非極大值抑制 118
7.4 理解支持向量機 118
7.5 基於HOG描述符檢測人 119
7.6 創建並訓練物體檢測器 122
7.6.1 理解BoW 122
7.6.2 將BoW應用於計算機視覺領域 123
7.6.3 k均值聚類 123
7.7 檢測汽車 124
7.7.1 支持向量機和滑動窗口相結合 129
7.7.2 檢測場景中的汽車 130
7.7.3 保存並加載經過訓練的支持向量機 135
7.8 本章小結 135

第8章 物體跟踪 136
8.1 技術需求 136
8.2 基於背景差分檢測運動物體 137
8.2.1 實現基本背景差分器 138
8.2.2 使用MOG背景差分器 140
8.2.3 使用KNN背景差分器 143
8.2.4 使用GMG和其他背景差分器 145
8.3 利用MeanShift和CamShift跟踪彩色物體 147
8.3.1 規劃MeanShift示例 148
8.3.2 計算和反投影顏色直方圖 148
8.3.3 實現MeanShift示例 152
8.3.4 使用CamShift 153
8.4 使用卡爾曼濾波器尋找運動趨勢 155
8.4.1 理解預測和更新階段 155
8.4.2 跟踪鼠標光標 156
8.5 跟踪行人 158
8.5.1 規劃應用程序的流程 158
8.5.2 比較面向對象範式和函數範式 159
8.5.3 實現行人類 160
8.5.4 實現主函數 162
8.5.5 考慮接下來的步驟 165
8.6 本章小結 165

第9章 攝像頭模型和增強現實 166
9.1 技術需求 166
9.2 理解3D圖像跟踪和增強現實 167
9.2.1 理解攝像頭和鏡頭參數 168
9.2.2 理解cv2.solvePnPRansac 172
9.3 實現demo應用程序 174
9.3.1 導入模塊 174
9.3.2 執行灰度轉換 175
9.3.3 執行2D到3D的空間轉換 176
9.3.4 實現應用程序類 177
9.3.5 運行和測試應用程序 192
9.4 改進3D跟踪算法 195
9.5 本章小結 195

第10章 基於OpenCV的神經網絡導論 197
10.1 技術需求 198
10.2 理解人工神經網絡 198
10.2.1 理解神經元和感知器 199
10.2.2 理解神經網絡的層 200
10.3 用OpenCV訓練基本人工神經網絡 202
10.4 訓練多階段人工神經網絡分類器 203
10.5 基於人工神經網絡識別手寫數字 207
10.5.1 理解手寫數字的MNIST數據庫 207
10.5.2 為MNIST數據庫選擇訓練參數 208
10.5.3 實現模塊來訓練人工神經網絡 208
10.5.4 實現簡單測試模塊 212
10.5.5 實現主模塊 212
10.5.6 試著提升人工神經網絡訓練性能 217
10.5.7 尋找其他潛在應用程序 218
10.6 在OpenCV中使用其他框架的深度神經網絡 219
10.7 基於第三方深度神經網絡的物體檢測和分類 220
10.8 基於第三方深度神經網絡的人臉檢測和分類 223
10.9 本章小結 228
附錄 基於曲線濾波器彎曲顏色空間 229