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