OpenCV電腦視覺開發實踐:基於Qt C++
朱文偉、李建英
- 出版商: 清華大學
- 出版日期: 2025-04-01
- 定價: $828
- 售價: 8.5 折 $704
- 語言: 簡體中文
- ISBN: 7302684790
- ISBN-13: 9787302684794
-
相關分類:
C++ 程式語言、影像辨識 Image-recognition、Qt、Computer Vision
下單後立即進貨 (約4週~6週)
商品描述
目錄大綱
目 錄
第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 屏幕分辨率 3
1.1.7 圖像的灰度 4
1.1.8 灰度級 4
1.1.9 圖像深度 4
1.1.10 二值圖像 5
1.1.11 灰度圖 5
1.1.12 彩色圖像 5
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 數字圖像處理常用的方法 9
1.3.4 圖像處理的應用 12
1.4 圖像信號處理層次 12
1.5 電腦視覺 13
1.5.1 電腦視覺的概念 13
1.5.2 電腦視覺系統的構成和分類 14
1.5.3 機器視覺的優勢 14
1.5.4 機器視覺系統的應用 14
1.5.5 電腦視覺與相關學科的關系 15
1.6 OpenCV概述 15
1.7 Qt簡介 17
第2章 搭建OpenCV開發環境 19
2.1 Windows下搭建OpenCV開發環境 19
2.1.1 下載和安裝Qt 19
2.1.2 下載和解壓OpenCV 26
2.1.3 瞭解構建工具 27
2.1.4 下載和安裝CMake 28
2.1.5 生成Makefile文件 30
2.1.6 開始編譯OpenCV 33
2.1.7 Qt開發的第一個OpenCV程序 34
2.2 Linux下搭建OpenCV開發環境 38
2.2.1 準備編譯OpenCV所需依賴 39
2.2.2 編譯OpenCV源碼 40
2.2.3 Linux下的第一個OpenCV程序 43
2.2.4 下載Qt 46
2.2.5 安裝依賴包 46
2.2.6 安裝Qt 47
2.2.7 Linux下用Qt開發OpenCV 51
2.2.8 做個快照 54
2.3 數學函數 55
2.4 OpenCV架構 56
2.5 圖像輸入輸出模塊imgcodecs 57
2.5.1 imread讀取圖像文件 58
2.5.2 imwrite保存圖片 60
2.6 OpenCV界面編程 62
2.6.1 新建窗口並顯示 62
2.6.2 單窗口顯示多幅圖像 64
2.6.3 銷毀窗口 66
2.6.4 調整窗口大小 68
2.6.5 鼠標事件 69
2.6.6 鍵盤事件 71
2.6.7 滑動條事件 73
第3章 核心模塊Core 76
3.1 矩陣操作 76
3.1.1 矩陣類Mat 76
3.1.2 構造法 78
3.1.3 直接賦值法 82
3.1.4 數組法 82
3.1.5 create函數法 83
3.1.6 定義特殊矩陣 83
3.1.7 得到矩陣的行數、列數和維數 84
3.1.8 矩陣的數據指針及其打印 85
3.1.9 創建新的矩陣頭 86
3.1.10 得到矩陣通道數 88
3.1.11 復制矩陣 88
3.1.12 判斷矩陣是否有元素 93
3.1.13 矩陣的5種遍歷方式 93
3.1.14 設置矩陣新值 100
3.1.15 得到矩陣的元素總個數 100
3.1.16 矩形類Rect 100
3.2 數組的操作 101
3.3 讀寫XML和YAML文件 105
3.3.1 YAML文件簡介 105
3.3.2 寫入和讀取YAML\XML文件的基本步驟 106
3.3.3 XML、YAML文件的打開 106
3.3.4 文本和數字的輸入和輸出 106
3.3.5 OpenCV數據結構的輸入和輸出 106
3.3.6 vector(arrays)和maps的輸入和輸出 107
3.3.7 文件關閉 107
第4章 圖像處理模塊基礎 113
4.1 顏色變換cvtColor 113
4.2 畫基本圖形 115
4.2.1 點的表示 115
4.2.2 畫矩形 116
4.2.3 畫圓 117
4.2.4 畫橢圓 119
4.2.5 畫線段 122
4.2.6 填充多邊形 122
4.3 像素存放類Scalar 124
4.4 使用隨機數 126
4.4.1 產生一個隨機數 128
4.4.2 返回下一個隨機數 130
4.4.3 用隨機數填充矩陣 131
4.5 文字繪制 132
4.6 為圖像添加邊框 139
4.7 在圖像中查找輪廓 142
第5章 灰度變換和直方圖修正 149
5.1 點運算 149
5.1.1 基本概念 149
5.1.2 點運算的目標 150
5.1.3 點運算的分類 150
5.1.4 點運算的特點 150
5.1.5 點運算的應用 150
5.2 灰度變換 151
5.2.1 灰度變換概述 151
5.2.2 灰度變換的作用 152
5.2.3 灰度變換的方法 152
5.2.4 灰度化 152
5.2.5 對比度 155
5.2.6 灰度的線性變換 155
5.2.7 分段線性灰度變換 160
5.2.8 對數變換和反對數變換 165
5.2.9 冪律變換 170
5.3 直方圖修正 172
5.3.1 直方圖的概念 172
5.3.2 OpenCV實現灰度直方圖 173
5.3.3 直方圖均衡化 175
第6章 圖像平滑 181
6.1 平滑處理算法 181
6.2 線性濾波 183
6.2.1 歸一化方框濾波器 183
6.2.2 高斯濾波器 185
6.3 非線性濾波 188
6.3.1 中值濾波 188
6.3.2 雙邊濾波 189
第7章 幾何變換 193
7.1 幾何變換基礎 193
7.2 圖像平移 196
7.3 圖像旋轉 198
7.4 仿射變換 204
7.5 圖像縮放 207
7.5.1 縮放原理 207
7.5.2 OpenCV中的縮放 209
第8章 圖像邊緣檢測 211
8.1 圖像邊緣檢測概述 211
8.2 邊緣檢測研究的歷史現狀 213
8.3 邊緣定義及類型分析 214
8.4 梯度的概念 216
8.5 圖像邊緣檢測的應用 216
8.6 目前邊緣檢測存在的問題 217
8.7 邊緣檢測的基本思想 218
8.8 圖像邊緣檢測的步驟 219
8.9 經典圖像邊緣檢測算法 220
8.9.1 差分邊緣檢測 221
8.9.2 Roberts算子 223
8.9.3 Sobel算子邊緣檢測 225
8.9.4 Prewitt算子邊緣檢測 227
8.9.5 LoG邊緣檢測算子 230
8.9.6 邊緣檢測的新技術與方法 235
第9章 圖像分割 238
9.1 圖像分割概述 238
9.2 圖像分割的應用 240
9.3 圖像分割的數學定義 240
9.4 圖像分割方法的分類 241
9.4.1 基於閾值化的分割方法 242
9.4.2 基於邊緣的分割方法 243
9.4.3 基於區域的分割方法 243
9.4.4 基於神經網絡的分割方法 245
9.4.5 基於聚類的分割方法 246
9.5 使用OpenCV進行圖像分割 246
9.5.1 閾值分割 246
9.5.2 固定閾值分割 247
9.5.3 自適應閾值分割 250
9.6 彩色圖像分割 256
9.7 grabCut算法分割圖像 259
9.7.1 基本概念 259
9.7.2 grabCut函數 260
9.8 floodFill(漫水填充)分割 263
9.8.1 基本概念 263
9.8.2 floodFill函數 264
9.9 分水嶺分割法 270
9.9.1 基本概念 270
9.9.2 wathershed函數 271
第10章 圖像金字塔 279
10.1 圖像金字塔概述 279
10.2 高斯金字塔 280
10.2.1 向下採樣 281
10.2.2 向上採樣 284
10.3 拉普拉斯金字塔 286
第11章 圖像形態學 288
11.1 圖像形態學概述 288
11.2 形態學的應用 288
11.2.1 數學上的形態學 289
11.2.2 格 289
11.2.3 拓撲學 289
11.2.4 數學形態學的組成 290
11.2.5 數學形態學的應用 290
11.2.6 操作分類 291
11.3 結構元素 291
11.4 膨脹 291
11.5 腐蝕 292
11.6 開運算 294
11.7 閉運算 295
11.8 實現腐蝕和膨脹 296
11.9 開閉運算和頂帽黑帽 299
11.10 擊中擊不中 302
11.11 利用形態學運算提取水平線和垂直線 305
第12章 視頻處理 311
12.1 OpenCV視頻處理架構 311
12.2 類VideoCapture 312
12.3 構造VideoCapture對象 312
12.4 判斷視頻是否打開成功 313
12.5 讀取視頻幀 314
12.6 播放視頻文件 314
12.7 獲取和設置視頻屬性 316
12.8 播放攝像頭視頻 319
12.9 錄制視頻類VideoWriter 321
12.9.1 構造VideoWriter對象 321
12.9.2 初始化或重新初始化 322
12.9.3 連接一個fourcc代碼 322
12.10 實現一個視頻播放器 324
第13章 機器學習 330
13.1 機器學習概述 330
13.2 機器學習發展歷程 331
13.3 機器學習研究現狀 332
13.3.1 傳統機器學習的研究現狀 333
13.3.2 大數據環境下機器學習的研究現狀 334
13.4 機器學習的分類 334
13.4.1 基於學習策略的分類 335
13.4.2 基於學習方法的分類 335
13.4.3 基於學習方式的分類 336
13.4.4 基於數據形式的分類 336
13.4.5 基於學習目標的分類 336
13.5 機器學習常見算法 336
13.6 機器學習的研究內容 338
13.7 機器學習的應用 339
13.8 OpenCV中的機器學習 340
13.8.1 支持向量機 341
13.8.2 貝葉斯分類器 345
第14章 數字水印 348
14.1 數字水印概述 348
14.1.1 數字水印的特點 349
14.1.2 圖像數字水印 349
14.1.3 數字水印原理 349
14.1.4 嵌入過程 350
14.1.5 提取過程 350
14.2 相關函數 351
14.3 代碼實現數字水印 354
第15章 圖像加密和解密 357
15.1 圖像加密和解密原理 357
15.2 相關函數 358
15.3 代碼實現圖像加解密 359
第16章 物體計數 361
16.1 物體計數基本原理 361
16.2 在圖像上繪制文字 361
16.3 代碼實現藥片計數 364
第17章 圖像輪廓 367
17.1 圖像輪廓概述 367
17.2 應用場景 368
17.3 OpenCV中的輪廓函數 368
17.3.1 查找輪廓findContours 368
17.3.2 輪廓的基本屬性 369
17.3.3 繪制輪廓drawContours 370
17.3.4 求輪廓面積contourArea 370
17.4 實戰輪廓函數 371
17.5 實戰黑白翻轉 373
第18章 手勢識別 375
18.1 手勢識別概述 375
18.2 凸包和凸包檢測 375
18.2.1 查找凸包的示例 378
18.2.2 凸缺陷及其意義 381
18.3 手勢識別原理 387
18.4 區分手勢0和1 390
18.5 區分手勢2到5 392
第19章 停車場車牌識別系統 397
19.1 車牌識別技術概述 397
19.2 車牌識別技術的宏觀分析 398
19.2.1 國外技術分析 398
19.2.2 國內技術分析 400
19.2.3 車牌識別技術的難點 401
19.2.4 車牌識別系統的開發思路 401
19.3 車牌定位技術 402
19.3.1 車牌特徵概述 402
19.3.2 車牌定位方法 403
19.3.3 車牌圖像預處理 407
19.3.4 車牌圖像的灰度化 407
19.3.5 車牌圖像的直方圖均衡化 408
19.3.6 車牌圖像的濾波 410
19.3.7 車牌圖像的二值化 411
19.3.8 車牌圖像的邊緣檢測 411
19.3.9 車牌圖像的灰度映射 412
19.3.10 車牌圖像的改進型投影法定位 412
19.4 車牌字符分割技術 414
19.4.1 常用車牌字符分割算法 414
19.4.2 車牌傾斜問題 416
19.4.3 車牌傾斜度檢測方法 416
19.4.4 車牌傾斜度校正方法 417
19.4.5 車牌邊框和鉚釘的去除 417
19.4.6 車牌字符分割 417
19.4.7 基於垂直投影和先驗知識的車牌字符分割 418
19.4.8 粘連車牌字符的分割 419
19.4.9 斷裂車牌字符的合並 420
19.4.10 對車牌字符的切分結果進行確認 420
19.5 車牌字符識別技術 421
19.5.1 模式識別 421
19.5.2 字符識別 422
19.5.3 漢字識別 424
19.6 系統設計 424
19.7 系統拓撲結構 426
19.8 停車場端的詳細設計 426
19.9 辦公室端的詳細設計 433
19.9.1 創建項目 433
19.9.2 設計界面 433
19.9.3 實現構造函數 434
19.9.4 文件信息類MyFileInfo 435
19.9.5 實現連接服務器函數 436
19.9.6 關聯按鈕槽函數 437
19.9.7 實現文件下載功能 437
19.9.8 接收文件信息 438
19.9.9 接收文件數據 440
19.9.10 圖像處理相關的成員變量 441
19.9.11 實現打開文件 441
19.9.12 實現圖像二值化 442
19.9.13 實現定位車牌 444
19.9.14 實現分割字符 447
19.9.15 實現識別結果 452
19.9.16 運行程序 455