OpenCV 4計算機(jī)視覺:Python語言實現(xiàn)(原書第3版)
定 價:99 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[加]約瑟夫·豪斯(Joseph Howse),[愛]喬·米尼奇諾(Joe Minichino)
- 出版時間:2021/9/1
- ISBN:9787111689485
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.413
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書首先介紹OpenCV 4以及如何基于Python 3在各種平臺上安裝OpenCV 4。接下來,你將學(xué)習(xí)如何執(zhí)行讀取、寫入、操縱,以及顯示靜態(tài)圖像、視頻和攝像機(jī)回饋等基本操作。你還將學(xué)習(xí)圖像處理、視頻分析、深度估計和分割,并通過構(gòu)建一個簡單的GUI應(yīng)用程序獲得實踐經(jīng)驗。接下來,你將處理兩類常見問題:人臉檢測和人臉識別。你還將學(xué)習(xí)物體分類和機(jī)器學(xué)習(xí)的概念,這將使你能夠創(chuàng)建和使用物體檢測器和分類器,甚至跟蹤電影或攝像機(jī)回饋中的物體。稍后,你將學(xué)習(xí)3D跟蹤和增強(qiáng)現(xiàn)實。本書末尾,你將學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),學(xué)習(xí)如何開發(fā)手寫數(shù)字識別以及對人的性別和年齡分類的應(yīng)用程序。
計算機(jī)視覺是一門發(fā)展迅速的科學(xué),涵蓋了多種應(yīng)用和技術(shù)。這本書不但適用于計算機(jī)視覺的初學(xué)者,也適用于計算機(jī)視覺相關(guān)領(lǐng)域的專家。通過學(xué)習(xí)本書,你將能夠利用OpenCV 4和Python 3構(gòu)建應(yīng)用程序,將理論應(yīng)用于實踐。
首先,你將了解OpenCV 4,以及如何基于Python 3在各種平臺上安裝OpenCV 4。然后,你將學(xué)習(xí)如何執(zhí)行讀取、寫入、操縱,以及顯示靜態(tài)圖像、視頻和攝像頭回傳信號等基本操作,還將學(xué)習(xí)圖像處理、視頻分析、深度估計和分割,并通過構(gòu)建GUI應(yīng)用程序獲得實踐經(jīng)驗。接下來,你將處理兩類常見問題人臉檢測和人臉識別,還將學(xué)習(xí)物體分類和機(jī)器學(xué)習(xí)的概念,這將使你能夠創(chuàng)建和使用物體檢測器及分類器,甚至跟蹤電影或攝像頭回傳信號中的物體。稍后,你將學(xué)習(xí)3D跟蹤和增強(qiáng)現(xiàn)實的技能。*后,你將學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),學(xué)習(xí)如何開發(fā)手寫數(shù)字識別以及對人的性別和年齡進(jìn)行分類的應(yīng)用程序。
學(xué)習(xí)本書之后,你將擁有完成實際計算機(jī)視覺項目所需要的技能。
通過閱讀本書,你將能夠:
?安裝并熟悉OpenCV 4的Python 3綁定。
?理解圖像處理和視頻分析的基礎(chǔ)知識。
?利用深度相機(jī)來區(qū)分前景和背景區(qū)域。
?檢測和識別物體,并跟蹤物體在視頻中的運(yùn)動。
?訓(xùn)練和使用自己的模型匹配圖像以及分類物體。
?檢測和識別人臉,并對性別和年齡進(jìn)行分類。
?構(gòu)建增強(qiáng)現(xiàn)實應(yīng)用程序來跟蹤3D圖像。
?使用機(jī)器學(xué)習(xí)模型,包括支持向量機(jī)、人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)。
本書內(nèi)容是關(guān)于OpenCV的 Python 綁定的。從經(jīng)典技術(shù)到先進(jìn)技術(shù),從幾何知識到機(jī)器學(xué)習(xí),讀者將學(xué)習(xí)大量的技術(shù)和算法。在構(gòu)建良好應(yīng)用程序的過程中,這些內(nèi)容都有助于解決實際的計算機(jī)視覺問題。在使用OpenCV 4和Python 3的過程中,我們所采用的方法既適用于計算機(jī)視覺新手,又適用于希望擴(kuò)展和更新技能的專家。
首先,我們將介紹OpenCV 4,并解釋如何基于Python 3在各種平臺上安裝、設(shè)置OpenCV 4。接著將介紹如何執(zhí)行讀取、寫入、操縱和顯示靜態(tài)圖像、視頻以及攝像頭回傳信號等基本操作。還將介紹圖像處理和視頻分析,以及深度估計和分割,通過構(gòu)建簡單的GUI應(yīng)用程序,讓讀者獲得實踐技能。接下來,將處理兩類主流問題:人臉檢測和人臉識別。
隨著學(xué)習(xí)的深入,我們將探索物體分類和機(jī)器學(xué)習(xí)的概念,使讀者能夠創(chuàng)建和使用物體檢測器及分類器,甚至跟蹤電影或者攝像頭回傳信號中的物體。隨后我們將工作擴(kuò)展到3D跟蹤和增強(qiáng)現(xiàn)實。后,在開發(fā)識別手寫數(shù)字的應(yīng)用程序并對人的性別和年齡進(jìn)行分類時,我們將學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)和深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)。
讀完本書,你將獲得正確的知識和技能,以著手實際的計算機(jī)視覺項目。
目標(biāo)讀者
本書是為那些對計算機(jī)視覺、機(jī)器學(xué)習(xí)以及OpenCV在真實場景中的應(yīng)用感興趣的讀者編寫的,無論是計算機(jī)視覺新手,還是那些希望跟進(jìn)OpenCV 4和Python 3的專家,都非常適合閱讀本書。讀者應(yīng)該熟悉基本的Python編程知識,但是不需要具備圖像處理、計算機(jī)視覺或機(jī)器學(xué)習(xí)的先驗知識。
本書內(nèi)容
第1章解釋如何基于Python 3在各種平臺上安裝OpenCV 4。本章還提供了常見問題的處理步驟。
第2章介紹OpenCV的I/O功能。本章還討論了GUI項目的面向?qū)ο笤O(shè)計,我們將在其他章節(jié)中對該GUI項目進(jìn)一步開發(fā)。
第3章介紹一些轉(zhuǎn)換圖像所需的技術(shù),如顏色處理、圖像銳化、物體輪廓標(biāo)記以及幾何形狀檢測。
第4章展示如何使用來自深度攝像頭的數(shù)據(jù)識別前景和背景區(qū)域,以將效果限制在前景或背景。
第5章介紹基于OpenCV的一些人臉檢測和識別功能,以及定義特定類型的可檢測物體的數(shù)據(jù)文件。
第6章展示如何在OpenCV的幫助下描述圖像的特征,以及如何利用特征進(jìn)行圖像匹配和搜索。
第7章結(jié)合計算機(jī)視覺和機(jī)器學(xué)習(xí)算法來定位和分類圖像中的物體。本章還展示了如何使用OpenCV實現(xiàn)這種算法組合。
第8章演示跟蹤和預(yù)測視頻或?qū)崟r攝像頭中人和物體運(yùn)動的方法。
第9章將構(gòu)建一個增強(qiáng)現(xiàn)實應(yīng)用程序,使用攝像頭、物體和運(yùn)動的信息,實時地將3D圖形疊加到跟蹤的物體上。
第10章介紹OpenCV中的人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),并說明這些內(nèi)容在實際應(yīng)用中的用法。
附錄描述顏色曲線的概念以及利用SciPy對其進(jìn)行的實現(xiàn)。
配置
讀者至少要熟練掌握Python編程語言的基本知識。推薦使用Windows、macOS或Linux開發(fā)機(jī)。你可以參考第1章中關(guān)于安裝OpenCV 4、Python 3以及其他依賴項的說明。
本書采用實踐教學(xué)方法,包括77個示例腳本以及示例數(shù)據(jù)。閱讀本書的時候,這些示例將有助于強(qiáng)化概念。
本書的代碼是在BSD 3條款開放源碼許可下發(fā)布的,這與OpenCV本身所使用的許可相同。鼓勵讀者使用、修改、改進(jìn)示例程序,甚至發(fā)布對這些示例程序的更改。
下載示例代碼及彩色圖像
本書的示例代碼文件及截圖、樣圖和視頻文件,可以從http://www.packtpub.com通過個人賬號下載,也可以訪問華章圖書官網(wǎng)http://www.hzbook.com,通過注冊并登錄個人賬號下載。
本書的代碼包也托管在GitHub的https://github.com/PackPublishing/Learning-opencv-4-Computer-Vision-with-Python-Third-Edition處。如果代碼有更新,其上代碼也會隨之更新。
本書約定
文本中的代碼體:指示文本中的代碼字、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴(kuò)展名、路徑名、用戶輸入和Twitter句柄。例如OpenCV提供了VideoCapture和VideoWriter類,它們支持各種視頻文件格式。
代碼塊示例:
代碼塊中需關(guān)注的部分加粗表示:
通常,命令行輸入或輸出這樣表示:
對于Windows系統(tǒng),命令行輸入或輸出這樣表示:
表示警告或重要注意點。
表示提示和技巧。
譯者序
前言
作者簡介
審校者簡介
第1章 安裝OpenCV 1
1.1 技術(shù)需求 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以及類似系統(tǒng)上安裝 8
1.3.4 在其他類UNIX系統(tǒng)上安裝 11
1.4 運(yùn)行示例 12
1.5 查找文檔、幫助和更新 13
1.6 本章小結(jié) 13
第2章 處理文件、攝像頭和GUI 14
2.1 技術(shù)需求 14
2.2 基本I/O腳本 14
2.2.1 讀取/寫入圖像文件 15
2.2.2 在圖像和原始字節(jié)之間進(jìn)行轉(zhuǎn)換 17
2.2.3 基于numpy.array訪問圖像數(shù)據(jù) 19
2.2.4 讀取/寫入視頻文件 21
2.2.5 捕捉攝像頭幀 22
2.2.6 在窗口中顯示圖像 23
2.2.7 在窗口中顯示攝像頭幀 24
2.3 項目Cameo(人臉跟蹤和圖像處理) 25
2.4 Cameo:面向?qū)ο蟮脑O(shè)計 26
2.4.1 基于managers.CaptureManager提取視頻流 26
2.4.2 基于managers.WindowManager提取窗口和鍵盤 30
2.4.3 基于cameo.Cameo應(yīng)用所有內(nèi)容 31
2.5 本章小結(jié) 33
第3章 基于OpenCV的圖像處理 34
3.1 技術(shù)需求 34
3.2 在不同顏色模型之間進(jìn)行圖像轉(zhuǎn)換 34
3.3 探索傅里葉變換 35
3.4 創(chuàng)建模塊 38
3.5 邊緣檢測 38
3.6 自定義核:獲取卷積 39
3.7 修改應(yīng)用程序 41
3.8 基于Canny的邊緣檢測 43
3.9 輪廓檢測 43
3.9.1 邊框、小矩形區(qū)域以及小外接圓 44
3.9.2 凸輪廓和Douglas-Peucker算法 46
3.10 檢測線、圓以及其他形狀 48
3.10.1 檢測線 48
3.10.2 檢測圓 49
3.10.3 檢測其他形狀 50
3.11 本章小結(jié) 50
第4章 深度估計和分割 51
4.1 技術(shù)需求 51
4.2 創(chuàng)建模塊 52
4.3 從深度攝像頭捕捉幀 52
4.4 將10位圖像轉(zhuǎn)換成8位圖像 54
4.5 由視差圖創(chuàng)建掩模 56
4.6 修改應(yīng)用程序 57
4.7 基于普通攝像頭的深度估計 59
4.8 基于GrabCut算法的前景檢測 64
4.9 基于分水嶺算法的圖像分割 67
4.10 本章小結(jié) 69
第5章 人臉檢測和識別 70
5.1 技術(shù)需求 71
5.2 Haar級聯(lián)的概念化 71
5.3 獲取Haar級聯(lián)數(shù)據(jù) 72
5.4 使用OpenCV進(jìn)行人臉檢測 72
5.4.1 在靜態(tài)圖像上進(jìn)行人臉檢測 73
5.4.2 在視頻上進(jìn)行人臉檢測 74
5.4.3 進(jìn)行人臉識別 77
5.5 在紅外線下?lián)Q臉 83
5.5.1 修改應(yīng)用程序的循環(huán) 84
5.5.2 掩模復(fù)制操作 86
5.6 本章小結(jié) 88
第6章 使用圖像描述符檢索和搜索圖像 89
6.1 技術(shù)需求 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 匹配兩幅圖像中的標(biāo)識 98
6.7 使用K近鄰和比率檢驗過濾匹配 101
6.8 基于FLANN的匹配 104
6.9 基于FLANN進(jìn)行單應(yīng)性匹配 107
6.10 示例應(yīng)用程序:文身取證 110
6.10.1 將圖像描述符保存到文件 110
6.10.2 掃描匹配 111
6.11 本章小結(jié) 114
第7章 建立自定義物體檢測器 115
7.1 技術(shù)需求 115
7.2 理解HOG描述符 116
7.2.1 HOG的可視化 116
7.2.2 使用HOG描述圖像的區(qū)域 117
7.3 理解非極大值抑制 118
7.4 理解支持向量機(jī) 118
7.5 基于HOG描述符檢測人 119
7.6 創(chuàng)建并訓(xùn)練物體檢測器 122
7.6.1 理解BoW 122
7.6.2 將BoW應(yīng)用于計算機(jī)視覺領(lǐng)域 123
7.6.3 k均值聚類 123
7.7 檢測汽車 124
7.7.1 支持向量機(jī)和滑動窗口相結(jié)合 129
7.7.2 檢測場景中的汽車 130
7.7.3 保存并加載經(jīng)過訓(xùn)練的支持向量機(jī) 135
7.8 本章小結(jié) 135
第8章 物體跟蹤 136
8.1 技術(shù)需求 136
8.2 基于背景差分檢測運(yùn)動物體 137
8.2.1 實現(xiàn)基本背景差分器 138
8.2.2 使用MOG背景差分器 140
8.2.3 使用KNN背景差分器 143
8.2.4 使用GMG和其他背景差分器 145
8.3 利用MeanShift和CamShift跟蹤彩色物體 147
8.3.1 規(guī)劃MeanShift示例 148
8.3.2 計算和反投影顏色直方圖 148
8.3.3 實現(xiàn)MeanShift示例 152
8.3.4 使用CamShift 153
8.4 使用卡爾曼濾波器尋找運(yùn)動趨勢 155
8.4.1 理解預(yù)測和更新階段 155
8.4.2 跟蹤鼠標(biāo)光標(biāo) 156
8.5 跟蹤行人 158
8.5.1 規(guī)劃應(yīng)用程序的流程 158
8.5.2 比較面向?qū)ο蠓妒胶秃瘮?shù)范式 159
8.5.3 實現(xiàn)行人類 160
8.5.4 實現(xiàn)主函數(shù) 162
8.5.5 考慮接下來的步驟 165
8.6 本章小結(jié) 165
第9章 攝像頭模型和增強(qiáng)現(xiàn)實 166
9.1 技術(shù)需求 166
9.2 理解3D圖像跟蹤和增強(qiáng)現(xiàn)實 167
9.2.1 理解攝像頭和鏡頭參數(shù) 168
9.2.2 理解cv2.solvePnPRansac 172
9.3 實現(xiàn)demo應(yīng)用程序 174
9.3.1 導(dǎo)入模塊 174
9.3.2 執(zhí)行灰度轉(zhuǎn)換 175
9.3.3 執(zhí)行2D到3D的空間轉(zhuǎn)換 176
9.3.4 實現(xiàn)應(yīng)用程序類 177
9.3.5 運(yùn)行和測試應(yīng)用程序 192
9.4 改進(jìn)3D跟蹤算法 195
9.5 本章小結(jié) 195
第10章 基于OpenCV的神經(jīng)網(wǎng)絡(luò)導(dǎo)論 197
10.1 技術(shù)需求 198
10.2 理解人工神經(jīng)網(wǎng)絡(luò) 198
10.2.1 理解神經(jīng)元和感知器 199
10.2.2 理解神經(jīng)網(wǎng)絡(luò)的層 200
10.3 用OpenCV訓(xùn)練基本人工神經(jīng)網(wǎng)絡(luò) 202
10.4 訓(xùn)練多階段人工神經(jīng)網(wǎng)絡(luò)分類器 203
10.5 基于人工神經(jīng)網(wǎng)絡(luò)識別手寫數(shù)字 207
10.5.1 理解手寫數(shù)字的MNIST數(shù)據(jù)庫 207
10.5.2 為MNIST數(shù)據(jù)庫選擇訓(xùn)練參數(shù) 208
10.5.3 實現(xiàn)模塊來訓(xùn)練人工神經(jīng)網(wǎng)絡(luò) 208
10.5.4 實現(xiàn)簡單測試模塊 212
10.5.5 實現(xiàn)主模塊 212
10.5.6 試著提升人工神經(jīng)網(wǎng)絡(luò)訓(xùn)練性能 217
10.5.7 尋找其他潛在應(yīng)用程序 218
10.6 在OpenCV中使用其他框架的深度神經(jīng)網(wǎng)絡(luò) 219
10.7 基于第三方深度神經(jīng)網(wǎng)絡(luò)的物體檢測和分類 220
10.8 基于第三方深度神經(jīng)網(wǎng)絡(luò)的人臉檢測和分類 223
10.9 本章小結(jié) 228
附錄 基于曲線濾波器彎曲顏色空間 229