OpenCV 3是一種先進的計算機視覺庫,它提供了很多圖像和視頻處理操作,以及一些代表計算機視覺未來發(fā)展方向的功能,如人臉識別或目標跟蹤。學習計算機視覺算法、模型和OpenCV API的基本概念之后,可以開發(fā)各種現(xiàn)實生活中的應用程序(如安全和監(jiān)控方面的應用程序)。
本書從圖像處理的基本操作出發(fā),帶你開啟先進計算機視覺的探索之旅。計算機視覺是一個快速發(fā)展的學科,與其相關的現(xiàn)實應用也呈爆炸性增長,本書的目的就是幫助計算機視覺領域的新手和想要了解全新的OpenCV 3.0.0的計算機視覺專家快速掌握基于Python的OpenCV計算機視覺開發(fā)的實用方法、技巧和實踐。
通過閱讀本書,你將學到:
安裝和熟練使用基于Python的OpenCV 3的API
掌握圖像處理和視頻分析的基礎知識
在圖像和視頻中檢測和識別目標
使用OpenCV檢測和識別人臉
訓練和使用自己的對象分類器
了解計算機視覺中的機器學習概念
使用OpenCV的人工神經網絡來解決實際問題
開發(fā)現(xiàn)實生活中的計算機視覺應用
OpenCV是開源、跨平臺的計算機視覺庫,由英特爾公司發(fā)起并參與開發(fā),在商業(yè)和研究領域中可以免費使用。本書介紹了如何通過Python來開發(fā)基于OpenCV 3.0的應用。作為當前非常流行的動態(tài)語言之一,Python不僅使用非常簡單,而且功能強大。通過Python來學習OpenCV框架,可以讓你很快理解計算機視覺的基本概念以及重要算法。
本書分9章來介紹計算機視覺的重要概念,所有的概念都融入了一些很有趣的項目。本書首先詳細介紹了多個平臺下基于Python的OpenCV安裝,繼而介紹了計算機視覺應用的基本操作,包括:圖像文件的讀取與顯示,圖像處理的基本操作(比如邊緣檢測等),深度估計與分割,人臉檢測與識別,圖像的檢索,目標的檢測與識別,目標跟蹤,神經網絡的手寫體識別。可以這樣說,本書是一本不可多得的采用OpenCV實踐計算機視覺應用的好書。
作者簡介
Joe Minichino Hoolux Medical計算機視覺工程師,NoSQL數(shù)據庫LokiJS的開發(fā)者。他是一個充滿激情的程序員,對編程語言和技術充滿好奇,并不斷嘗試。在Hoolux,Joe領導了針對醫(yī)療行業(yè)的Android計算機視覺廣告平臺的開發(fā)。
Joseph Howse Nummist Media公司總裁,自2012年起,出版了多部OpenCV方面的著作,包括《OpenCV for Secret Agents》《Android Application Programming with OpenCV 3》和《OpenCV Computer Vision with Python》等。
譯者簡介
劉波 博士,任教于重慶工商大學計算機科學與信息工程學院,主要從事機器學習理論、計算機視覺和優(yōu)化技術研究,同時對Hadoop和Spark平臺上的大數(shù)據分析感興趣,也對Linux平臺的編程和Oracle數(shù)據庫感興趣。
苗貝貝 碩士,北京工商大學計算機與信息工程學院研究生,主要從事機器學習理論、時間序列動力學特征分析及應用的研究,對基于Python的計算機視覺分析有濃厚的興趣。
史斌 畢業(yè)于電子科技大學計算機學院,目前就職于成都知數(shù)科技有限公司,主要從事數(shù)據爬取、數(shù)據處理、平臺運維等工作,熟悉Python、Linux shell,同時熱愛計算機視覺編程,熟悉Python下的OpenCV編程。
目 錄 Contents
譯者序
前言
作者簡介
審校者簡介
譯者簡介
第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 運行示例 13
1.4 查找文檔、幫助及更新 14
1.5 總結 15
第2章 處理文件、攝像頭和圖形用戶界面 16
2.1 基本I/O腳本 16
2.1.1 讀/寫圖像文件 16
2.1.2 圖像與原始字節(jié)之間的轉換 19
2.1.3 使用numpy.array訪問圖像數(shù)據 20
2.1.4 視頻文件的讀/寫 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抽象窗口和鍵盤 32
2.3.3 cameo.Cameo的強大實現(xiàn) 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 邊界框、最小矩形區(qū)域和最小閉圓的輪廓 46
3.10 凸輪廓與Douglas-Peucker算法 48
3.11 直線和圓檢測 50
3.11.1 直線檢測 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 對復制操作執(zhí)行掩模 57
4.5 使用普通攝像頭進行深度估計 59
4.6 使用分水嶺和GrabCut算法進行物體分割 63
4.6.1 用GrabCut進行前景檢測的例子 64
4.6.2 使用分水嶺算法進行圖像分割 66
4.7 總結 69
第5章 人臉檢測和識別 70
5.1 Haar級聯(lián)的概念 70
5.2 獲取Haar級聯(lián)數(shù)據 71
5.3 使用OpenCV進行人臉檢測 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進行特征提取與描述 86
6.1.3 使用快速Hessian算法和SURF來提取和檢測特征 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 目標檢測與識別技術 106
7.1.1 HOG描述符 107
7.1.2 檢測人 112
7.1.3 創(chuàng)建和訓練目標檢測器 113
7.2 汽車檢測 116
7.2.1 代碼的功能 118
7.2.2 SVM和滑動窗口 122
7.3 總結 134
第8章 目標跟蹤 135
8.1 檢測移動的目標 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 一個基于行人跟蹤的例子 153
8.4.4 Pedestrian類 154
8.4.5 主程序 157
8.5 總結 159
第9章 基于OpenCV的神經網絡簡介 160
9.1 人工神經網絡 160
9.2 人工神經網絡的結構 161
9.2.1 網絡層級示例 162
9.2.2 學習算法 163
9.3 OpenCV中的ANN 164
9.3.1 基于ANN的動物分類 166
9.3.2 訓練周期 169
9.4 用人工神經網絡進行手寫數(shù)字識別 170
9.4.1 MNIST—手寫數(shù)字數(shù)據庫 170
9.4.2 定制訓練數(shù)據 170
9.4.3 初始參數(shù) 171
9.4.4 迭代次數(shù) 171
9.4.5 其他參數(shù) 171
9.4.6 迷你庫 172
9.4.7 主文件 175
9.5 可能的改進和潛在的應用 180
9.5.1 改進 180
9.5.2 應用 181
9.6 總結 181