OpenCV 3是一種先進(jìn)的計(jì)算機(jī)視覺庫(kù),它提供了很多圖像和視頻處理操作,以及一些代表計(jì)算機(jī)視覺未來(lái)發(fā)展方向的功能,如人臉識(shí)別或目標(biāo)跟蹤。學(xué)習(xí)計(jì)算機(jī)視覺算法、模型和OpenCV API的基本概念之后,可以開發(fā)各種現(xiàn)實(shí)生活中的應(yīng)用程序(如安全和監(jiān)控方面的應(yīng)用程序)。
本書從圖像處理的基本操作出發(fā),帶你開啟先進(jìn)計(jì)算機(jī)視覺的探索之旅。計(jì)算機(jī)視覺是一個(gè)快速發(fā)展的學(xué)科,與其相關(guān)的現(xiàn)實(shí)應(yīng)用也呈爆炸性增長(zhǎng),本書的目的就是幫助計(jì)算機(jī)視覺領(lǐng)域的新手和想要了解全新的OpenCV 3.0.0的計(jì)算機(jī)視覺專家快速掌握基于Python的OpenCV計(jì)算機(jī)視覺開發(fā)的實(shí)用方法、技巧和實(shí)踐。
通過(guò)閱讀本書,你將學(xué)到:
安裝和熟練使用基于Python的OpenCV 3的API
掌握?qǐng)D像處理和視頻分析的基礎(chǔ)知識(shí)
在圖像和視頻中檢測(cè)和識(shí)別目標(biāo)
使用OpenCV檢測(cè)和識(shí)別人臉
訓(xùn)練和使用自己的對(duì)象分類器
了解計(jì)算機(jī)視覺中的機(jī)器學(xué)習(xí)概念
使用OpenCV的人工神經(jīng)網(wǎng)絡(luò)來(lái)解決實(shí)際問(wèn)題
開發(fā)現(xiàn)實(shí)生活中的計(jì)算機(jī)視覺應(yīng)用
OpenCV是開源、跨平臺(tái)的計(jì)算機(jī)視覺庫(kù),由英特爾公司發(fā)起并參與開發(fā),在商業(yè)和研究領(lǐng)域中可以免費(fèi)使用。本書介紹了如何通過(guò)Python來(lái)開發(fā)基于OpenCV 3.0的應(yīng)用。作為當(dāng)前非常流行的動(dòng)態(tài)語(yǔ)言之一,Python不僅使用非常簡(jiǎn)單,而且功能強(qiáng)大。通過(guò)Python來(lái)學(xué)習(xí)OpenCV框架,可以讓你很快理解計(jì)算機(jī)視覺的基本概念以及重要算法。
本書分9章來(lái)介紹計(jì)算機(jī)視覺的重要概念,所有的概念都融入了一些很有趣的項(xiàng)目。本書首先詳細(xì)介紹了多個(gè)平臺(tái)下基于Python的OpenCV安裝,繼而介紹了計(jì)算機(jī)視覺應(yīng)用的基本操作,包括:圖像文件的讀取與顯示,圖像處理的基本操作(比如邊緣檢測(cè)等),深度估計(jì)與分割,人臉檢測(cè)與識(shí)別,圖像的檢索,目標(biāo)的檢測(cè)與識(shí)別,目標(biāo)跟蹤,神經(jīng)網(wǎng)絡(luò)的手寫體識(shí)別??梢赃@樣說(shuō),本書是一本不可多得的采用OpenCV實(shí)踐計(jì)算機(jī)視覺應(yīng)用的好書。
作者簡(jiǎn)介
Joe Minichino Hoolux Medical計(jì)算機(jī)視覺工程師,NoSQL數(shù)據(jù)庫(kù)LokiJS的開發(fā)者。他是一個(gè)充滿激情的程序員,對(duì)編程語(yǔ)言和技術(shù)充滿好奇,并不斷嘗試。在Hoolux,Joe領(lǐng)導(dǎo)了針對(duì)醫(yī)療行業(yè)的Android計(jì)算機(jī)視覺廣告平臺(tái)的開發(fā)。
Joseph Howse Nummist Media公司總裁,自2012年起,出版了多部OpenCV方面的著作,包括《OpenCV for Secret Agents》《Android Application Programming with OpenCV 3》和《OpenCV Computer Vision with Python》等。
譯者簡(jiǎn)介
劉波 博士,任教于重慶工商大學(xué)計(jì)算機(jī)科學(xué)與信息工程學(xué)院,主要從事機(jī)器學(xué)習(xí)理論、計(jì)算機(jī)視覺和優(yōu)化技術(shù)研究,同時(shí)對(duì)Hadoop和Spark平臺(tái)上的大數(shù)據(jù)分析感興趣,也對(duì)Linux平臺(tái)的編程和Oracle數(shù)據(jù)庫(kù)感興趣。
苗貝貝 碩士,北京工商大學(xué)計(jì)算機(jī)與信息工程學(xué)院研究生,主要從事機(jī)器學(xué)習(xí)理論、時(shí)間序列動(dòng)力學(xué)特征分析及應(yīng)用的研究,對(duì)基于Python的計(jì)算機(jī)視覺分析有濃厚的興趣。
史斌 畢業(yè)于電子科技大學(xué)計(jì)算機(jī)學(xué)院,目前就職于成都知數(shù)科技有限公司,主要從事數(shù)據(jù)爬取、數(shù)據(jù)處理、平臺(tái)運(yùn)維等工作,熟悉Python、Linux shell,同時(shí)熱愛計(jì)算機(jī)視覺編程,熟悉Python下的OpenCV編程。
目 錄 Contents
譯者序
前言
作者簡(jiǎn)介
審校者簡(jiǎn)介
譯者簡(jiǎn)介
第1章 安裝OpenCV 1
1.1 選擇和使用合適的安裝工具 2
1.1.1 在Windows上安裝 2
1.1.2 在OS X系統(tǒng)中安裝 6
1.1.3 在Ubuntu及其衍生版本中安裝 11
1.1.4 在其他類Unix系統(tǒng)中安裝 12
1.2 安裝Contrib模塊 13
1.3 運(yùn)行示例 13
1.4 查找文檔、幫助及更新 14
1.5 總結(jié) 15
第2章 處理文件、攝像頭和圖形用戶界面 16
2.1 基本I/O腳本 16
2.1.1 讀/寫圖像文件 16
2.1.2 圖像與原始字節(jié)之間的轉(zhuǎn)換 19
2.1.3 使用numpy.array訪問(wèn)圖像數(shù)據(jù) 20
2.1.4 視頻文件的讀/寫 22
2.1.5 捕獲攝像頭的幀 23
2.1.6 在窗口顯示圖像 24
2.1.7 在窗口顯示攝像頭幀 25
2.2 Cameo項(xiàng)目(人臉跟蹤和圖像處理) 26
2.3 Cameo—面向?qū)ο蟮脑O(shè)計(jì) 27
2.3.1 使用managers. CaptureManager提取視頻流 27
2.3.2 使用managers.WindowManager抽象窗口和鍵盤 32
2.3.3 cameo.Cameo的強(qiáng)大實(shí)現(xiàn) 33
2.4 總結(jié) 34
第3章 使用OpenCV 3處理圖像 36
3.1 不同色彩空間的轉(zhuǎn)換 36
3.2 傅里葉變換 37
3.2.1 高通濾波器 37
3.2.2 低通濾波器 39
3.3 創(chuàng)建模塊 39
3.4 邊緣檢測(cè) 40
3.5 用定制內(nèi)核做卷積 41
3.6 修改應(yīng)用 43
3.7 Canny邊緣檢測(cè) 44
3.8 輪廓檢測(cè) 45
3.9 邊界框、最小矩形區(qū)域和最小閉圓的輪廓 46
3.10 凸輪廓與Douglas-Peucker算法 48
3.11 直線和圓檢測(cè) 50
3.11.1 直線檢測(cè) 50
3.11.2 圓檢測(cè) 51
3.12 檢測(cè)其他形狀 52
3.13 總結(jié) 52
第4章 深度估計(jì)與分割 53
4.1 創(chuàng)建模塊 53
4.2 捕獲深度攝像頭的幀 54
4.3 從視差圖得到掩模 56
4.4 對(duì)復(fù)制操作執(zhí)行掩模 57
4.5 使用普通攝像頭進(jìn)行深度估計(jì) 59
4.6 使用分水嶺和GrabCut算法進(jìn)行物體分割 63
4.6.1 用GrabCut進(jìn)行前景檢測(cè)的例子 64
4.6.2 使用分水嶺算法進(jìn)行圖像分割 66
4.7 總結(jié) 69
第5章 人臉檢測(cè)和識(shí)別 70
5.1 Haar級(jí)聯(lián)的概念 70
5.2 獲取Haar級(jí)聯(lián)數(shù)據(jù) 71
5.3 使用OpenCV進(jìn)行人臉檢測(cè) 72
5.3.1 靜態(tài)圖像中的人臉檢測(cè) 72
5.3.2 視頻中的人臉檢測(cè) 74
5.3.3 人臉識(shí)別 76
5.4 總結(jié) 82
第6章 圖像檢索以及基于圖像描述符的搜索 83
6.1 特征檢測(cè)算法 83
6.1.1 特征定義 84
6.1.2 使用DoG和SIFT進(jìn)行特征提取與描述 86
6.1.3 使用快速Hessian算法和SURF來(lái)提取和檢測(cè)特征 89
6.1.4 基于ORB的特征檢測(cè)和特征匹配 91
6.1.5 ORB特征匹配 93
6.1.6 K-最近鄰匹配 95
6.1.7 FLANN匹配 96
6.1.8 FLANN的單應(yīng)性匹配 99
6.1.9 基于文身取證的應(yīng)用程序示例 102
6.2 總結(jié) 105
第7章 目標(biāo)檢測(cè)與識(shí)別 106
7.1 目標(biāo)檢測(cè)與識(shí)別技術(shù) 106
7.1.1 HOG描述符 107
7.1.2 檢測(cè)人 112
7.1.3 創(chuàng)建和訓(xùn)練目標(biāo)檢測(cè)器 113
7.2 汽車檢測(cè) 116
7.2.1 代碼的功能 118
7.2.2 SVM和滑動(dòng)窗口 122
7.3 總結(jié) 134
第8章 目標(biāo)跟蹤 135
8.1 檢測(cè)移動(dòng)的目標(biāo) 135
8.2 背景分割器:KNN、MOG2和GMG 138
8.2.1 均值漂移和CAMShift 142
8.2.2 彩色直方圖 144
8.2.3 返回代碼 146
8.3 CAMShift 147
8.4 卡爾曼濾波器 149
8.4.1 預(yù)測(cè)和更新 149
8.4.2 范例 150
8.4.3 一個(gè)基于行人跟蹤的例子 153
8.4.4 Pedestrian類 154
8.4.5 主程序 157
8.5 總結(jié) 159
第9章 基于OpenCV的神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介 160
9.1 人工神經(jīng)網(wǎng)絡(luò) 160
9.2 人工神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) 161
9.2.1 網(wǎng)絡(luò)層級(jí)示例 162
9.2.2 學(xué)習(xí)算法 163
9.3 OpenCV中的ANN 164
9.3.1 基于ANN的動(dòng)物分類 166
9.3.2 訓(xùn)練周期 169
9.4 用人工神經(jīng)網(wǎng)絡(luò)進(jìn)行手寫數(shù)字識(shí)別 170
9.4.1 MNIST—手寫數(shù)字?jǐn)?shù)據(jù)庫(kù) 170
9.4.2 定制訓(xùn)練數(shù)據(jù) 170
9.4.3 初始參數(shù) 171
9.4.4 迭代次數(shù) 171
9.4.5 其他參數(shù) 171
9.4.6 迷你庫(kù) 172
9.4.7 主文件 175
9.5 可能的改進(jìn)和潛在的應(yīng)用 180
9.5.1 改進(jìn) 180
9.5.2 應(yīng)用 181
9.6 總結(jié) 181