《OpenCV 4.5計算機視覺開發實戰(基於VC++)》是清華大學出版社於2021年出版的圖書,作者是朱文偉、李建英。
基本介紹
- 中文名:OpenCV 4.5計算機視覺開發實戰(基於VC++)
- 作者:朱文偉 、李建英
- 類別:編程開發
- 出版社:清華大學出版社
- 出版時間:2021年6月1日
- 定價:89 元
- ISBN:9787302580935
內容簡介,圖書目錄,作者簡介,
內容簡介
OpenCV是計算機視覺領域的開發者必須掌握的技術。本書針對 OpenCV 4.5進行編寫,全面系統地介紹OpenCV 4.5的使用。書中重點介紹OpenCV 4.5相比之前的版本做出的重大修改。
本書共14章,主要內容包括OpenCV 4.5的基礎知識、OpenCV開發環境搭建、OpenCV的模組架構、圖像的讀取與顯示、核心模組CORE、圖像處理模組基礎、灰度變換和直方圖修正、圖像平滑、幾何變換、圖像分割、圖像金字塔、圖像形態學、圖像邊緣檢測、視頻載入與攝像頭調用、攝像頭視頻錄製以及OpenCV在機器學習方面的套用等,最後給出一個停車場車牌識別系統的大案例。
本書適合計算機視覺與圖像處理的開發人員、已有圖像處理基礎並想了解OpenCV 4.5新特性的開發人員閱讀,也適合高等院校和培訓機構計算機視覺與圖像處理相關專業的師生作為教學參考書。
圖書目錄
第1章 數字圖像視覺概述 1
1.1 圖像的基本概念 1
1.1.1 圖像和圖形 1
1.1.2 什麼是數字圖像 1
1.1.3 數字圖像的特點 2
1.1.4 圖像單位(像素) 2
1.1.5 圖像解析度 3
1.1.6 螢幕解析度 4
1.1.7 圖像的灰度 4
1.1.8 灰度級 4
1.1.9 圖像深度 5
1.1.10 二值圖像 5
1.1.11 灰度圖 5
1.1.12 彩色圖像 6
1.1.13 通道 6
1.1.14 圖像存儲 6
1.2 圖像噪聲 6
1.2.1 圖像噪聲的定義 6
1.2.2 圖像噪聲的來源 7
1.2.3 圖像噪聲的濾除 7
1.3 圖像處理 8
1.3.1 圖像處理的分類 8
1.3.2 數字圖像處理 9
1.3.3 數字圖像處理常用的方法 10
1.3.4 圖像處理的套用 13
1.4 圖像信號處理層次 13
1.5 機器視覺 14
1.5.1 機器視覺的概念 14
1.5.2 機器視覺系統構成和分類 15
1.5.3 機器視覺的優勢 15
1.5.4 機器視覺系統的套用 15
1.5.5 計算機視覺與相關學科的關係 15
1.6 OpenCV概述 16
第2章 搭建OpenCV開發環境 18
2.1 視覺圖像編程的重要庫 18
2.2 啟動Visual C++ 2017 19
2.3 下載OpenCV 4.5 20
2.4 解壓OpenCV 20
2.5 在程式中測試OpenCV 21
2.6 在VC中配置通用開發環境 23
2.7 數學函式 24
2.8 OpenCV架構 26
2.9 圖像輸入輸出模組imgcodecs 27
2.9.1 imread讀取圖像檔案 28
2.9.2 imwrite保存圖片 30
2.10 OpenCV界面編程 32
2.11 單視窗顯示多幅圖像 34
2.12 銷毀視窗 36
2.13 滑鼠事件 39
2.14 鍵盤事件 42
2.15 滑動條事件 43
第3章 核心模組Core 46
3.1 矩陣操作 46
3.1.1 矩陣類Mat 46
3.1.2 構造法 48
3.1.3 直接賦值法 52
3.1.4 數組法 52
3.1.5 create函式法 53
3.1.6 定義特殊矩陣 53
3.1.7 得到矩陣的行數、列數和維數 54
3.1.8 矩陣的數據指針及其列印 55
3.1.9 創建新的矩陣頭 57
3.1.10 得到矩陣通道數 58
3.1.11 複製矩陣 59
3.1.12 判斷矩陣是否有元素 64
3.1.13 矩陣的5種遍歷方式 64
3.1.14 設定矩陣新值 71
3.1.15 得到矩陣的元素總個數 71
3.1.16 矩形類Rect 72
3.2 數組的操作 73
3.3 XML和YAML檔案讀寫 76
3.3.1 YAML檔案簡介 76
3.3.2 寫入和讀取YAML\XML檔案的基本步驟 77
3.3.3 XML、YAML檔案的打開 77
3.3.4 文本和數字的輸入和輸出 78
3.3.5 OpenCV數據結構的輸入和輸出 78
3.3.6 vector(arrays)和 maps的輸入和輸出 78
3.3.7 檔案關閉 79
第4章 圖像處理模組基礎 85
4.1 顏色變換cvtColor 85
4.2 畫基本圖形 87
4.2.1 點的表示 87
4.2.2 畫矩形 88
4.2.3 畫圓 90
4.2.4 畫橢圓 91
4.2.5 畫線段 94
4.2.6 填充多邊形 94
4.3 像素存放類Scalar 97
4.4 使用隨機數 99
4.4.1 產生一個隨機數 101
4.4.2 返回下一個隨機數 102
4.4.3 用隨機數填充矩陣 103
4.5 文字繪製 105
4.6 為圖像添加框線 112
4.7 在圖像中查找輪廓 116
第5章 灰度變換和直方圖修正 122
5.1 點運算 122
5.1.1 基本概念 122
5.1.2 點運算的目標 122
5.1.3 點運算的分類 122
5.1.4 點運算的特點 123
5.1.5 點運算的套用 123
5.2 灰度變換 124
5.2.1 灰度變換概述 124
5.2.2 灰度變換的作用 125
5.2.3 灰度變換的方法 125
5.2.4 灰度化 125
5.2.5 對比度 128
5.2.6 灰度的線性變換 129
5.2.7 分段線性灰度變換 132
5.2.8 對數變換和反對數變換 138
5.2.9 冪律變換 143
5.3 直方圖修正 145
5.3.1 直方圖的概念 145
5.3.2 OpenCV實現灰度直方圖 146
5.3.3 直方圖均衡化 148
第6章 圖像平滑 154
6.1 平滑處理算法 154
6.2 線性濾波 156
6.2.1 歸一化方框濾波器 156
6.2.2 高斯濾波器 158
6.3 非線性濾波 161
6.3.1 中值濾波 161
6.3.2 雙邊濾波 162
第7章 幾何變換 165
7.1 幾何變換基礎 165
7.2 圖像平移 168
7.3 圖像旋轉 171
7.4 仿射變換 175
7.5 圖像縮放 179
7.5.1 縮放原理 179
7.5.2 OpenCV中的縮放 180
第8章 圖像邊緣檢測 182
8.1 概述 182
8.2 邊緣檢測研究的歷史現狀 185
8.3 邊緣定義及類型分析 186
8.4 梯度的概念 187
8.5 圖像邊緣檢測的套用 187
8.6 目前邊緣檢測存在的問題 189
8.7 邊緣檢測的基本思想 190
8.8 圖像邊緣檢測的步驟方法 190
8.9 經典圖像邊緣檢測算法 191
8.9.1 差分邊緣檢測 192
8.9.2 Roberts運算元 194
8.9.3 Sobel運算元邊緣檢測 196
8.9.4 Prewitt運算元邊緣檢測 199
8.9.5 LoG邊緣檢測運算元 202
8.9.6 邊緣檢測的新技術與方法 206
第9章 圖像分割 209
9.1 概述 209
9.2 圖像分割的套用 211
9.3 圖像分割的數學定義 212
9.4 圖像分割方法的分類 212
9.4.1 基於閾值的分割方法 213
9.4.2 基於邊緣的分割方法 214
9.4.3 基於區域的分割方法 215
9.4.4 基於神經網路的分割方法 216
9.4.5 基於聚類的分割方法 217
9.5 使用OpenCV進行圖像分割 218
9.5.1 閾值分割 218
9.5.2 固定閾值分割 218
9.5.3 自適應閾值分割 222
9.6 彩色圖像分割 228
9.7 grabCut算法分割圖像 232
9.7.1 基本概念 232
9.7.2 grabCut函式 233
9.8 floodFill漫水填充分割 236
9.8.1 基本概念 236
9.8.2 floodFill函式 236
9.9 分水嶺分割法 242
9.9.1 基本概念 242
9.9.2 wathershed函式 244
第10章 圖像金字塔 253
10.1 基本概念 253
10.2 高斯金字塔 255
10.2.1 向下採樣 255
10.2.2 向上採樣 258
10.3 拉普拉斯金字塔 260
第11章 圖像形態學 263
11.1 基本概念 263
11.2 形態學的套用 263
11.2.1 數學上的形態學 264
11.2.2 格 264
11.2.3 拓撲學 264
11.2.4 數學形態學的組成 265
11.2.5 數學形態學的套用 265
11.2.6 操作分類 266
11.3 結構元素 266
11.4 膨脹 266
11.5 腐蝕 267
11.6 開運算 269
11.7 閉運算 271
11.8 實現腐蝕和膨脹 273
11.9 開閉運算和頂帽黑帽 275
11.10 擊中擊不中 278
11.11 利用形態學運算提取水平線和垂直線 282
第12章 視頻處理 288
12.1 OpenCV視頻處理架構 288
12.2 類VideoCapture 289
12.3 構造VideoCapture對象 289
12.4 判斷打開視頻是否成功 290
12.5 讀取視頻幀 290
12.6 播放視頻檔案 291
12.7 獲取和設定視頻屬性 293
12.8 播放攝像頭視頻 296
12.9 錄製視頻類VideoWriter 297
12.9.1 構造VideoWriter對象 297
12.9.2 初始化或重新初始化 298
12.9.3 連線到FourCC代碼 298
第13章 機器學習 302
13.1 機器學習概述 302
13.2 機器學習的發展歷程 303
13.3 機器學習研究現狀 304
13.3.1 傳統機器學習的研究現狀 305
13.3.2 大數據環境下機器學習的研究現狀 306
13.4 機器學習的分類 307
13.4.1 基於學習策略的分類 307
13.4.2 基於學習方法的分類 307
13.4.3 基於學習方式的分類 308
13.4.4 基於數據形式的分類 308
13.4.5 基於學習目標的分類 308
13.5 機器學習常見的算法 308
13.6 機器學習的研究內容 310
13.7 機器學習的套用 311
13.8 OpenCV中的機器學習 312
13.8.1 支持向量機 313
13.8.2 貝葉斯分類器 317
第14章 案例:停車場車牌識別系統 320
14.1 車牌識別技術概述 320
14.2 車牌識別技術的巨觀分析 321
14.2.1 國外技術分析 321
14.2.2 國內技術分析 323
14.2.3 車牌識別技術的技術難點 324
14.2.4 車牌識別系統的開發思路 324
14.3 車牌定位技術 325
14.3.1 車牌特徵概述 325
14.3.2 車牌定位方法 326
14.3.3 車牌圖像預處理 330
14.3.4 車牌圖像的灰度化 330
14.3.5 車牌圖像的直方圖均衡化 332
14.3.6 車牌圖像的濾波 333
14.3.7 車牌圖像的二值化 335
14.3.8 車牌圖像的邊緣檢測 335
14.3.9 車牌圖像的灰度映射 336
14.3.10 車牌圖像的改進型投影法定位 336
14.4 車牌字元分割技術 338
14.4.1 常用的車牌字元分割算法 338
14.4.2 車牌傾斜問題 340
14.4.3 車牌傾斜度的檢測方法 340
14.4.4 車牌傾斜度校正方法 341
14.4.5 車牌框線和鉚釘的去除 341
14.4.6 車牌字元分割 341
14.4.7 基於垂直投影和先驗知識的車牌字元分割 342
14.4.8 粘連車牌字元的分割 343
14.4.9 斷裂車牌字元的合併 344
14.4.10 對車牌字元的切分結果進行確認 344
14.5 車牌字元識別技術 345
14.5.1 模式識別 345
14.5.2 字元識別 346
14.5.3 漢字識別 347
14.6 系統設計 348
14.7 系統拓撲結構 348
14.8 停車場端的詳細設計 349
14.9 辦公室端的詳細設計 358
作者簡介
朱文偉,名校計算機專業統招碩士,20年C\C++、Java開發經驗。主導開發過密碼、圖形、人工智慧等產品。精通Linux、Windows系統開發及資料庫開發技術。著有圖書《Windows C/C++加密解密實戰》《密碼學原理與Java實現》《Linux C與C++ 一線開發實踐》《Visual C++2017從入門到精通》。