OpenCV 4計(jì)算機(jī)視覺:Python語言實(shí)現(xiàn)(原書第3版)
定 價(jià):99 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[加]約瑟夫·豪斯(Joseph Howse),[愛]喬·米尼奇諾(Joe Minichino)
- 出版時(shí)間:2021/9/1
- ISBN:9787111689485
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.413
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書首先介紹OpenCV 4以及如何基于Python 3在各種平臺(tái)上安裝OpenCV 4。接下來,你將學(xué)習(xí)如何執(zhí)行讀取、寫入、操縱,以及顯示靜態(tài)圖像、視頻和攝像機(jī)回饋等基本操作。你還將學(xué)習(xí)圖像處理、視頻分析、深度估計(jì)和分割,并通過構(gòu)建一個(gè)簡單的GUI應(yīng)用程序獲得實(shí)踐經(jīng)驗(yàn)。接下來,你將處理兩類常見問題:人臉檢測(cè)和人臉識(shí)別。你還將學(xué)習(xí)物體分類和機(jī)器學(xué)習(xí)的概念,這將使你能夠創(chuàng)建和使用物體檢測(cè)器和分類器,甚至跟蹤電影或攝像機(jī)回饋中的物體。稍后,你將學(xué)習(xí)3D跟蹤和增強(qiáng)現(xiàn)實(shí)。本書末尾,你將學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),學(xué)習(xí)如何開發(fā)手寫數(shù)字識(shí)別以及對(duì)人的性別和年齡分類的應(yīng)用程序。
計(jì)算機(jī)視覺是一門發(fā)展迅速的科學(xué),涵蓋了多種應(yīng)用和技術(shù)。這本書不但適用于計(jì)算機(jī)視覺的初學(xué)者,也適用于計(jì)算機(jī)視覺相關(guān)領(lǐng)域的專家。通過學(xué)習(xí)本書,你將能夠利用OpenCV 4和Python 3構(gòu)建應(yīng)用程序,將理論應(yīng)用于實(shí)踐。
首先,你將了解OpenCV 4,以及如何基于Python 3在各種平臺(tái)上安裝OpenCV 4。然后,你將學(xué)習(xí)如何執(zhí)行讀取、寫入、操縱,以及顯示靜態(tài)圖像、視頻和攝像頭回傳信號(hào)等基本操作,還將學(xué)習(xí)圖像處理、視頻分析、深度估計(jì)和分割,并通過構(gòu)建GUI應(yīng)用程序獲得實(shí)踐經(jīng)驗(yàn)。接下來,你將處理兩類常見問題人臉檢測(cè)和人臉識(shí)別,還將學(xué)習(xí)物體分類和機(jī)器學(xué)習(xí)的概念,這將使你能夠創(chuàng)建和使用物體檢測(cè)器及分類器,甚至跟蹤電影或攝像頭回傳信號(hào)中的物體。稍后,你將學(xué)習(xí)3D跟蹤和增強(qiáng)現(xiàn)實(shí)的技能。*后,你將學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),學(xué)習(xí)如何開發(fā)手寫數(shù)字識(shí)別以及對(duì)人的性別和年齡進(jìn)行分類的應(yīng)用程序。
學(xué)習(xí)本書之后,你將擁有完成實(shí)際計(jì)算機(jī)視覺項(xiàng)目所需要的技能。
通過閱讀本書,你將能夠:
?安裝并熟悉OpenCV 4的Python 3綁定。
?理解圖像處理和視頻分析的基礎(chǔ)知識(shí)。
?利用深度相機(jī)來區(qū)分前景和背景區(qū)域。
?檢測(cè)和識(shí)別物體,并跟蹤物體在視頻中的運(yùn)動(dòng)。
?訓(xùn)練和使用自己的模型匹配圖像以及分類物體。
?檢測(cè)和識(shí)別人臉,并對(duì)性別和年齡進(jìn)行分類。
?構(gòu)建增強(qiáng)現(xiàn)實(shí)應(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ù),從幾何知識(shí)到機(jī)器學(xué)習(xí),讀者將學(xué)習(xí)大量的技術(shù)和算法。在構(gòu)建良好應(yīng)用程序的過程中,這些內(nèi)容都有助于解決實(shí)際的計(jì)算機(jī)視覺問題。在使用OpenCV 4和Python 3的過程中,我們所采用的方法既適用于計(jì)算機(jī)視覺新手,又適用于希望擴(kuò)展和更新技能的專家。
首先,我們將介紹OpenCV 4,并解釋如何基于Python 3在各種平臺(tái)上安裝、設(shè)置OpenCV 4。接著將介紹如何執(zhí)行讀取、寫入、操縱和顯示靜態(tài)圖像、視頻以及攝像頭回傳信號(hào)等基本操作。還將介紹圖像處理和視頻分析,以及深度估計(jì)和分割,通過構(gòu)建簡單的GUI應(yīng)用程序,讓讀者獲得實(shí)踐技能。接下來,將處理兩類主流問題:人臉檢測(cè)和人臉識(shí)別。
隨著學(xué)習(xí)的深入,我們將探索物體分類和機(jī)器學(xué)習(xí)的概念,使讀者能夠創(chuàng)建和使用物體檢測(cè)器及分類器,甚至跟蹤電影或者攝像頭回傳信號(hào)中的物體。隨后我們將工作擴(kuò)展到3D跟蹤和增強(qiáng)現(xiàn)實(shí)。后,在開發(fā)識(shí)別手寫數(shù)字的應(yīng)用程序并對(duì)人的性別和年齡進(jìn)行分類時(shí),我們將學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)和深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)。
讀完本書,你將獲得正確的知識(shí)和技能,以著手實(shí)際的計(jì)算機(jī)視覺項(xiàng)目。
目標(biāo)讀者
本書是為那些對(duì)計(jì)算機(jī)視覺、機(jī)器學(xué)習(xí)以及OpenCV在真實(shí)場(chǎng)景中的應(yīng)用感興趣的讀者編寫的,無論是計(jì)算機(jī)視覺新手,還是那些希望跟進(jìn)OpenCV 4和Python 3的專家,都非常適合閱讀本書。讀者應(yīng)該熟悉基本的Python編程知識(shí),但是不需要具備圖像處理、計(jì)算機(jī)視覺或機(jī)器學(xué)習(xí)的先驗(yàn)知識(shí)。
本書內(nèi)容
第1章解釋如何基于Python 3在各種平臺(tái)上安裝OpenCV 4。本章還提供了常見問題的處理步驟。
第2章介紹OpenCV的I/O功能。本章還討論了GUI項(xiàng)目的面向?qū)ο笤O(shè)計(jì),我們將在其他章節(jié)中對(duì)該GUI項(xiàng)目進(jìn)一步開發(fā)。
第3章介紹一些轉(zhuǎn)換圖像所需的技術(shù),如顏色處理、圖像銳化、物體輪廓標(biāo)記以及幾何形狀檢測(cè)。
第4章展示如何使用來自深度攝像頭的數(shù)據(jù)識(shí)別前景和背景區(qū)域,以將效果限制在前景或背景。
第5章介紹基于OpenCV的一些人臉檢測(cè)和識(shí)別功能,以及定義特定類型的可檢測(cè)物體的數(shù)據(jù)文件。
第6章展示如何在OpenCV的幫助下描述圖像的特征,以及如何利用特征進(jìn)行圖像匹配和搜索。
第7章結(jié)合計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)算法來定位和分類圖像中的物體。本章還展示了如何使用OpenCV實(shí)現(xiàn)這種算法組合。
第8章演示跟蹤和預(yù)測(cè)視頻或?qū)崟r(shí)攝像頭中人和物體運(yùn)動(dòng)的方法。
第9章將構(gòu)建一個(gè)增強(qiáng)現(xiàn)實(shí)應(yīng)用程序,使用攝像頭、物體和運(yùn)動(dòng)的信息,實(shí)時(shí)地將3D圖形疊加到跟蹤的物體上。
第10章介紹OpenCV中的人工神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò),并說明這些內(nèi)容在實(shí)際應(yīng)用中的用法。
附錄描述顏色曲線的概念以及利用SciPy對(duì)其進(jìn)行的實(shí)現(xiàn)。
配置
讀者至少要熟練掌握Python編程語言的基本知識(shí)。推薦使用Windows、macOS或Linux開發(fā)機(jī)。你可以參考第1章中關(guān)于安裝OpenCV 4、Python 3以及其他依賴項(xiàng)的說明。
本書采用實(shí)踐教學(xué)方法,包括77個(gè)示例腳本以及示例數(shù)據(jù)。閱讀本書的時(shí)候,這些示例將有助于強(qiáng)化概念。
本書的代碼是在BSD 3條款開放源碼許可下發(fā)布的,這與OpenCV本身所使用的許可相同。鼓勵(lì)讀者使用、修改、改進(jìn)示例程序,甚至發(fā)布對(duì)這些示例程序的更改。
下載示例代碼及彩色圖像
本書的示例代碼文件及截圖、樣圖和視頻文件,可以從http://www.packtpub.com通過個(gè)人賬號(hào)下載,也可以訪問華章圖書官網(wǎng)http://www.hzbook.com,通過注冊(cè)并登錄個(gè)人賬號(hào)下載。
本書的代碼包也托管在GitHub的https://github.com/PackPublishing/Learning-opencv-4-Computer-Vision-with-Python-Third-Edition處。如果代碼有更新,其上代碼也會(huì)隨之更新。
本書約定
文本中的代碼體:指示文本中的代碼字、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴(kuò)展名、路徑名、用戶輸入和Twitter句柄。例如OpenCV提供了VideoCapture和VideoWriter類,它們支持各種視頻文件格式。
代碼塊示例:
代碼塊中需關(guān)注的部分加粗表示:
通常,命令行輸入或輸出這樣表示:
對(duì)于Windows系統(tǒng),命令行輸入或輸出這樣表示:
表示警告或重要注意點(diǎn)。
表示提示和技巧。
譯者序
前言
作者簡介
審校者簡介
第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 項(xiàng)目Cameo(人臉跟蹤和圖像處理) 25
2.4 Cameo:面向?qū)ο蟮脑O(shè)計(jì) 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 邊緣檢測(cè) 38
3.6 自定義核:獲取卷積 39
3.7 修改應(yīng)用程序 41
3.8 基于Canny的邊緣檢測(cè) 43
3.9 輪廓檢測(cè) 43
3.9.1 邊框、小矩形區(qū)域以及小外接圓 44
3.9.2 凸輪廓和Douglas-Peucker算法 46
3.10 檢測(cè)線、圓以及其他形狀 48
3.10.1 檢測(cè)線 48
3.10.2 檢測(cè)圓 49
3.10.3 檢測(cè)其他形狀 50
3.11 本章小結(jié) 50
第4章 深度估計(jì)和分割 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 基于普通攝像頭的深度估計(jì) 59
4.8 基于GrabCut算法的前景檢測(cè) 64
4.9 基于分水嶺算法的圖像分割 67
4.10 本章小結(jié) 69
第5章 人臉檢測(cè)和識(shí)別 70
5.1 技術(shù)需求 71
5.2 Haar級(jí)聯(lián)的概念化 71
5.3 獲取Haar級(jí)聯(lián)數(shù)據(jù) 72
5.4 使用OpenCV進(jìn)行人臉檢測(cè) 72
5.4.1 在靜態(tài)圖像上進(jìn)行人臉檢測(cè) 73
5.4.2 在視頻上進(jìn)行人臉檢測(cè) 74
5.4.3 進(jìn)行人臉識(shí)別 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 理解特征檢測(cè)和匹配的類型 90
6.3 檢測(cè)Harris角點(diǎn) 90
6.4 檢測(cè)DoG特征并提取SIFT描述符 92
6.5 檢測(cè)快速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)識(shí) 98
6.7 使用K近鄰和比率檢驗(yàn)過濾匹配 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章 建立自定義物體檢測(cè)器 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描述符檢測(cè)人 119
7.6 創(chuàng)建并訓(xùn)練物體檢測(cè)器 122
7.6.1 理解BoW 122
7.6.2 將BoW應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域 123
7.6.3 k均值聚類 123
7.7 檢測(cè)汽車 124
7.7.1 支持向量機(jī)和滑動(dòng)窗口相結(jié)合 129
7.7.2 檢測(cè)場(chǎng)景中的汽車 130
7.7.3 保存并加載經(jīng)過訓(xùn)練的支持向量機(jī) 135
7.8 本章小結(jié) 135
第8章 物體跟蹤 136
8.1 技術(shù)需求 136
8.2 基于背景差分檢測(cè)運(yùn)動(dòng)物體 137
8.2.1 實(shí)現(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 計(jì)算和反投影顏色直方圖 148
8.3.3 實(shí)現(xiàn)MeanShift示例 152
8.3.4 使用CamShift 153
8.4 使用卡爾曼濾波器尋找運(yùn)動(dòng)趨勢(shì) 155
8.4.1 理解預(yù)測(cè)和更新階段 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 實(shí)現(xiàn)行人類 160
8.5.4 實(shí)現(xiàn)主函數(shù) 162
8.5.5 考慮接下來的步驟 165
8.6 本章小結(jié) 165
第9章 攝像頭模型和增強(qiáng)現(xiàn)實(shí) 166
9.1 技術(shù)需求 166
9.2 理解3D圖像跟蹤和增強(qiáng)現(xiàn)實(shí) 167
9.2.1 理解攝像頭和鏡頭參數(shù) 168
9.2.2 理解cv2.solvePnPRansac 172
9.3 實(shí)現(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 實(shí)現(xiàn)應(yīng)用程序類 177
9.3.5 運(yùn)行和測(cè)試應(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í)別手寫數(shù)字 207
10.5.1 理解手寫數(shù)字的MNIST數(shù)據(jù)庫 207
10.5.2 為MNIST數(shù)據(jù)庫選擇訓(xùn)練參數(shù) 208
10.5.3 實(shí)現(xiàn)模塊來訓(xùn)練人工神經(jīng)網(wǎng)絡(luò) 208
10.5.4 實(shí)現(xiàn)簡單測(cè)試模塊 212
10.5.5 實(shí)現(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ò)的物體檢測(cè)和分類 220
10.8 基于第三方深度神經(jīng)網(wǎng)絡(luò)的人臉檢測(cè)和分類 223
10.9 本章小結(jié) 228
附錄 基于曲線濾波器彎曲顏色空間 229