OpenCV 4.5 電腦視覺開發實戰 (基於 VC++)

朱文偉 李建英

  • OpenCV 4.5 電腦視覺開發實戰 (基於 VC++)-preview-1
  • OpenCV 4.5 電腦視覺開發實戰 (基於 VC++)-preview-2
  • OpenCV 4.5 電腦視覺開發實戰 (基於 VC++)-preview-3
OpenCV 4.5 電腦視覺開發實戰 (基於 VC++)-preview-1

買這商品的人也買了...

商品描述

OpenCV是電腦視覺領域的開發者必須掌握的技術。本書針對 OpenCV 4.5進行編寫,全面系統地介紹OpenCV 4.5的使用。書中重點介紹OpenCV 4.5相比之前的版本做出的重大修改。 本書共14章,主要內容包括OpenCV 4.5的基礎知識、OpenCV開發環境搭建、OpenCV的模塊架構、圖像的讀取與顯示、核心模塊CORE、圖像處理模塊基礎、灰度變換和直方圖修正、圖像平滑、幾何變換、圖像分割、圖像金字塔、圖像形態學、圖像邊緣檢測、視頻加載與攝像頭調用、攝像頭視頻錄制以及OpenCV在機器學習方面的應用等,最後給出一個停車場車牌識別系統的大案例。 本書適合電腦視覺與圖像處理的開發人員、已有圖像處理基礎並想瞭解OpenCV 4.5新特性的開發人員閱讀,也適合高等院校和培訓機構電腦視覺與圖像處理相關專業的師生作為教學參考書。

作者簡介

朱文偉,名校計算機專業統招碩士,20年C\C++、Java開發經驗。主導開發過密碼、圖形、人工智能等產品。
精通Linux、Windows系統開發及數據庫開發技術。
著有圖書《Windows C/C++加密解密實戰》《密碼學原理與Java實現》《Linux C與C++ 一線開發實踐》《Visual C++2017從入門到精通》。

目錄大綱

目錄
第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