本書是一本通過OpenCV 4來講解算法的入門書。全書共分為4個部分,第一部分包括第1~3章,主要有OpenCVr入門知識、OpenCV 的圖像讀寫模塊和和辛苦core模塊講解;第二部分包括第4~7章,主要有頭像處理imgproc模塊、視頻處理videoio模塊和可視化highgui模塊、視頻分析video模塊講解;第三部分包括第8~10章,主要有2d特征框架feature2d模塊、照片處理photo模塊、目標檢測objdetect模塊講解;第四部分包括第11~12章,包括有深度神經網絡dnn模塊和機器學習ml模塊等眾多內容講解。
肖鈴,碩士,現任南方海洋科學與工程廣東省實驗室工程師。2016年畢業于中國科學技術大學與中國科學院合肥物質科學研究院安徽光機所大氣光學研究中心,曾就職于中興通訊股份有限公司和珠海金山辦公軟件有限公司,長期從事圖像處理、深度學習計算機視覺算法,以及基于TensorFlow Lite的AI模型部署研究。
第 1 章 OpenCV 快速入門
1.1 OpenCV 介紹
1.1.1 OpenCV 概述
1.1.2 OpenCV 的代碼結構
1.1.3 OpenCV 4 的新特性
1.2 OpenCV 開發環境搭建
1.2.1 案例 1:Windows 動態庫開發環境搭建
1.2.2 案例 2:Linux 動態庫開發環境搭建
1.2.3 案例 3:Python 語言開發環境搭建
1.3 OpenCV 模塊介紹
1.3.1 常用模塊
1.3.2 擴展模塊
1.4 OpenCV 源碼編譯
1.4.1 案例 4:OpenCV 編譯
1.4.2 案例 5:OpenCV 裁剪編譯
1.4.3 案例 6:擴展模塊 opencv-contrib
1.5 進階必備:OpenCV 入門參考
1.5.1 OpenCV 版本選擇
1.5.2 如何學習 OpenCV
第 2 章 圖像讀/寫模塊 imgcodecs
2.1 模塊導讀
2.2 圖像讀/寫操作
2.2.1 案例 7:圖像讀取
2.2.2 案例 8:圖像保存
2.3 圖像編/解碼
2.3.1 案例 9:圖像編碼應用
2.3.2 案例 10:圖像解碼應用
2.4 進階必備:聊聊圖像格式
第 3 章 核心庫模塊 core
3.1 模塊導讀
3.2 基本數據結構
3.2.1 案例 11:Mat 數據結構介紹及 C++調用
3.2.2 案例 12:Python 中的 Mat 對象操作
3.2.3 案例 13:Point 結構
3.2.4 案例 14:Rect 結構
3.2.5 案例 15:Size 結構
3.3 矩陣運算
3.3.1 案例 16:四則運算
3.3.2 案例 17:位運算
3.3.3 案例 18:代數運算
3.3.4 案例 19:比較運算
3.3.5 案例 20:特征值與特征向量
3.3.6 案例 21:生成隨機數矩陣
3.4 矩陣變換
3.4.1 案例 22:矩陣轉向量
3.4.2 案例 23:通道分離與通道合并
3.4.3 案例 24:圖像旋轉
3.4.4 案例 25:圖像拼接
3.4.5 案例 26:圖像邊界拓展
3.4.6 案例 27:傅里葉變換
3.5 進階必備:聊聊圖像像素遍歷與應用
3.5.1 案例 28:圖像像素遍歷
3.5.2 案例 29:提取拍照手寫簽名
第 4 章 圖像處理模塊 imgproc(一)
4.1 模塊導讀
4.2 案例 30:顏色空間變換
4.3 案例 31:圖像尺寸變換
4.4 基本繪制
4.4.1 案例 32:繪制標記
4.4.2 案例 33:繪制直線
4.4.3 案例 34:繪制矩形
4.4.4 案例 35:繪制圓
4.4.5 案例 36:繪制橢圓
4.4.6 案例 37:繪制文字
4.5 形態學運算
4.5.1 案例 38:腐蝕
4.5.2 案例 39:膨脹
4.5.3 案例 40:其他形態學運算
4.6 圖像濾波
4.6.1 案例 41:方框濾波
4.6.2 案例 42:均值濾波
4.6.3 案例 43:高斯濾波
4.6.4 案例 44:雙邊濾波
4.6.5 案例 45:中值濾波
4.7 邊緣檢測
4.7.1 案例 46:Sobel 邊緣檢測
4.7.2 案例 47:Scharr 邊緣檢測
4.7.3 案例 48:Laplacian 邊緣檢測
4.7.4 案例 49:Canny 邊緣檢測
4.8 進階必備:聊聊顏色模型
第 5 章 圖像處理模塊 imgproc(二)
5.1 霍夫變換
5.1.1 案例 50:霍夫線變換
5.1.2 案例 51:霍夫圓變換
5.2 案例 52:仿射變換
5.3 案例 53:透視變換
5.4 案例 54:重映射
5.5 閾值化
5.5.1 案例 55:基本閾值化
5.5.2 案例 56:自適應閾值化
5.6 圖像金字塔
5.6.1 案例 57:高斯金字塔
5.6.2 案例 58:拉普拉斯金字塔
5.7 直方圖
5.7.1 案例 59:直方圖計算
5.7.2 案例 60:直方圖均衡化
5.8 傳統圖像分割
5.8.1 案例 61:分水嶺算法
5.8.2 案例 62:GrabCut 算法
5.8.3 案例 63:漫水填充算法
5.9 角點檢測
5.9.1 案例 64:Harris 角點檢測
5.9.2 案例 65:Shi-Tomasi 角點檢測
5.9.3 案例 66:亞像素角點檢測
5.10 圖像輪廓
5.10.1 案例 67:輪廓查找
5.10.2 案例 68:輪廓繪制
5.11 輪廓包裹
5.11.1 案例 69:矩形邊框
5.11.2 案例 70:最小外接矩形
5.11.3 案例 71:最小外接圓
5.12 案例 72:多邊形填充
5.13 圖像擬合
5.13.1 案例 73:直線擬合
5.13.2 案例 74:橢圓擬合
5.13.3 案例 75:多邊形擬合
5.14 案例 76:凸包檢測
5.15 進階必備:圖像處理算法概述
第 6 章 可視化模塊 highgui
6.1 模塊導讀
6.2 圖像窗口
6.2.1 案例 77:創建與銷毀窗口
6.2.2 案例 78:圖像窗口操作
6.3 圖像操作
6.3.1 案例 79:圖像顯示
6.3.2 案例 80:選取感興趣區域
6.4 案例 81:鍵盤操作
6.5 案例 82:鼠標操作
6.6 案例 83:進度條操作
6.7 進階必備:在 Qt 中使用 OpenCV
第 7 章 視頻處理模塊 videoio
7.1 模塊導讀
7.2 視頻讀取
7.2.1 案例 84:從文件讀取視頻
7.2.2 案例 85:從設備讀取視頻
7.3 視頻保存
7.3.1 案例 86:從圖片文件創建視頻
7.3.2 案例 87:保存相機采集的視頻
7.4 進階必備:視頻編/解碼工具 FFMPEG
第 8 章 視頻分析模塊 video
8.1 運動分析
8.1.1 模塊導讀
8.1.2 案例 88:基于 MOG2 與 KNN 算法的運動分析
8.2 目標跟蹤
8.2.1 模塊導讀
8.2.2 案例 89:基于 CamShift 算法的目標跟蹤
8.2.3 案例 90:基于 meanShift 算法的目標跟蹤
8.2.4 案例 91:稀疏光流法運動目標跟蹤··.
8.2.5 案例 92:稠密光流法運動目標跟蹤
8.3 進階必備:深度學習光流算法
第 9 章 照片處理模塊 photo
9.1 模塊導讀
9.2 案例 93:基于 OpenCV 的無縫克隆
9.3 案例 94:基于 OpenCV 的圖像對比度保留脫色
9.4 案例 95:基于 OpenCV 的圖像修復
9.5 案例 96:基于 OpenCV 的 HDR 成像
9.6 圖像非真實感渲染
9.6.1 案例 97:邊緣保留濾波
9.6.2 案例 98:圖像細節增強
9.6.3 案例 99:鉛筆素描
9.6.4 案例 100:風格化圖像
9.7 進階必備:照片處理算法概述
第 10 章 2D 特征模塊 features2d
10.1 模塊導讀
10.2 特征點檢測
10.2.1 案例 101:SIFT 特征點檢測
10.2.2 案例 102:SURF 特征點檢測
10.2.3 案例 103:BRISK 特征點檢測
10.2.4 案例 104:ORB 特征點檢測
10.2.5 案例 105:KAZE 特征點檢測
10.2.6 案例 106:AKAZE 特征點檢測
10.2.7 案例 107:AGAST 特征點檢測
10.2.8 案例 108:FAST 特征點檢測
10.3 特征點匹配
10.3.1 案例 109:Brute-Force 特征點匹配
10.3.2 案例 110:FLANN 特征點匹配
10.4 進階必備:特征點檢測算法概述
第 11 章 相機標定與三維重建模塊 calib3d
11.1 模塊導讀
11.2 單應性變換
11.2.1 案例 111:單應性變換矩陣
11.2.2 案例 112:單應性應用之圖像插入
11.3 相機標定
11.3.1 案例 113:棋盤角點檢測并繪制
11.3.2 案例 114:消除圖像失真
11.4 進階必備:聊聊鏡頭失真
第 12 章 傳統目標檢測模塊 objdetect
12.1 模塊導讀
12.2 級聯分類器的應用
12.2.1 案例 115:人臉檢測
12.2.2 案例 116:人眼檢測
12.3 案例 117:HOG 描述符行人檢測
12.4 二維碼應用
12.4.1 案例 118:二維碼檢測
12.4.2 案例 119:二維碼解碼
12.5 進階必備:聊聊條形碼與二維碼
第 13 章 機器學習模塊 ml
13.1 模塊導讀
13.2 案例 120:基于 OpenCV 的Logistic回歸
13.3 案例 121:基于 OpenCV 的支持向量機
13.4 案例 122:基于 OpenCV 的主成分分析
13.5 進階必備:機器學習算法概述
第 14 章 深度學習模塊 dnn
14.1 模塊導讀
14.2 風格遷移
14.2.1 深度學習風格遷移
14.2.2 案例 123:OpenCV 實現風格遷移推理
14.3 圖像分類
14.3.1 深度學習圖像分類
14.3.2 案例 124:基于 TensorFlow 訓練
Fashion-MNIST 算法模型
14.3.3 案例 125:OpenCV 實現圖像分類推理
14.4 目標檢測
14.4.1 深度學習目標檢測
14.4.2 案例 126:OpenCV 實現目標檢測推理
14.5 圖像超分
14.5.1 深度學習圖像超分算法
14.5.2 案例 127:OpenCV 實現圖像超分推理
14.6 進階必備:OpenCV 與計算機視覺
14.6.1 計算機視覺的發展
14.6.2 OpenCV 在計算機視覺中的應用