OpenCV輕松入門:面向Python(第2版) ( 簡體 字) |
作者:李立宗 | 類別:1. -> 教材 -> 數位影像處理 2. -> 程式設計 -> Python |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 56336 詢問書籍請說出此書號!【有庫存】 NT售價: 700 元 |
出版日:6/1/2023 |
頁數:584 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121455995 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:第2版前言
本書第1版出版后,深受廣大讀者朋友的喜愛,被很多高校選為教材,目前累計重印18次。為了更好地方便大家學習,我對本書進行了修訂。本次修訂主要完成了以下幾個方面的工作:
1. 內容完善、重點針對人工智能部分
本書第2版在保持知識結構不變的前提下,對部分重點、難點知識進行了重新梳理與說明。重點對K近鄰算法、支持向量機、K均值聚類、人臉識別部分進行了較大篇幅的修改。在這部分中,對相關的知識點進行了更細致、深入的介紹,并增加了部分例題。在例題的介紹上,增加了更詳盡的分析過程,并對其中的一些難點問題進行了圖解說明。在代碼實現上,給出了更加細致的說明與介紹。
2. 飽和展示
在介紹一個知識點時,針對要使用的基礎知識點,以“如第N章所述、如前所述”等形式導入,大部分情況下是較為合理的。但是,如果要介紹的知識點和要導入的知識點難度都較大,那么采用上述方式導入,會造成理解上的困難。針對上述問題,我對導入部分進行了重新設計,以期幫助大家更好地快速過渡到核心關鍵知識點的學習。針對一些關鍵圖表等,也采用重復展示的方式,避免大家反復地回翻到前面的頁面查看該圖表而分散注意力,使大家能夠更好地將注意力集中在當前知識點上。
針對一些難度較大、不好理解、容易使用錯誤的知識點(如掩膜等),分別在不同的章節,從不同的角度,對這部分知識點進行了講解,以期能夠幫助大家更好地理解相關知識點。
針對用到的一些難度較大、比較典型的Python知識點進行了介紹,以期幫助大家在Python基礎比較薄弱,甚至不太了解Python的情況下能夠閱讀本書,完成程序的設計與編寫。
3. 一圖勝千言
一些知識點相對比較抽象,如果單純使用文字描述,此時的說明可能會顯得蒼白無力,造成理解上的困難。圖表能夠形象地說明問題的核心本質,幫助我們更深入、系統地理解問題的內在邏輯。針對一些相對抽象的知識點,繪制了示意圖,來幫助大家更直觀、更深入地理解其原理。針對一些流程比較復雜的案例,繪制了流程圖,幫助大家厘清問題的具體邏輯與思路。
4. 例題解析與代碼注釋
本書第2版對一些相對較難例題的解答進行了重新設計。其中,增加了例題的分析過程,在分析過程中,對例題的相關知識點、實現思路等進行了更詳細的介紹。在總體說明上,進行了模塊或步驟劃分,讓解決問題的思路更具條理性。在全局的展示與理解上,增加了流程圖,對解題的具體思路和流程進行更清晰的介紹與展示。在代碼實現上,對函數的選取、使用等進行了更細致的介紹。
5. 調整OpenCV的版本
在第2版中,我們使用的版本是OpenCV 4.5。OpenCV的版本升級對應著功能的增加與改進。一般來說,OpenCV的版本更新具有較好的兼容性,新版本是適配舊版本的,不涉及對原有函數的改變。但是,也有極個別的函數存在例外。例如,函數cv2.findContours()在OpenCV3中有3個返回值,在OpenCV4中只有2個返回值。在OpenCV4發布后,很多讀者反饋在使用該函數時遇到錯誤提示。實際上,這是由于OpenCV版本更新后,仍舊使用3個返回值造成的。在第2版中,我們調整了該函數的使用說明,并保留了對該函數早前版本的相關介紹。當然,總體來說,除該函數外,新、舊版本的差別主要體現在功能的增加上。我們在學習基礎函數時,不要將關注力過度集中在版本調整上。
6. 增加了配套PPT、練習題
本書第1版出版后,被很多高校選為教材。為了給廣大教師、同學提供更好的學習體驗,我在第2版中提供了配套PPT和練習題。配套PPT涵蓋了本書的全部核心知識點,超過1000頁。希望配套PPT能夠為大家的學習提供方便。
7. 修訂了一些錯誤
在本書第1版出版后,收到了很多熱心讀者的反饋,大家提出了很多寶貴的意見和建議。同時,大家也幫忙指出了書中存在的一些書寫錯誤。在認真聽取大家意見的基礎上,我對書中的問題進行了認真細致的修訂。請廣大讀者朋友們繼續支持本書,提出意見和建議,讓本書能夠更好地改進。
誠摯感謝
感謝各位熱心讀者對本書的支持,感謝你們提出的熱心建議與意見。
感謝高鐵杠老師、于仕琪老師、董付國老師、畢磊老師對本書的大力支持。
感謝符隆美老師積極促成本書第2版的出版,感謝她對本書的細心修訂,同時也感謝為本書出版辛苦付出的各位同人。
感謝家人們幫我分擔了很多家務,讓本書得以順利出版。
本書出版受天津職業技術師范大學教材支持項目(項目編號XJJW1970)支持。
擴展服務
作者與天津撥云咨詢服務有限公司合作開發了本書配套的資料——“數字圖像處理虛擬實驗室V0.1”,歡迎大家與作者聯系索取相關資料。
本書根據作者的視頻課程《Python+OpenCV圖像處理》整理擴充而成,歡迎大家掃描本書封底的二維碼輸入“視頻”獲取相關視頻課的內容。
歡迎大家繼續學習本書的進階教程《計算機視覺40例:從入門到深度學習(OpenCV-Python)》(2022年電子工業出版社出版)。
讀者服務
本書提供全部內容的配套源代碼、圖片和PPT,歡迎大家掃描本書封底的二維碼輸入“源代碼”、“圖片”和“PPT”關鍵字獲取相應內容。
另外,大家也可以關注我的微信公眾號:計算機視覺之光(微信號cvlight)獲取關于本書的配套資源等更多資料。
希冀共勉
近年來,我們加快推進科技自立自強,全社會研發經費支出從一萬億元增加到二萬八千億元,居世界第二位,研發人員總量居世界首位,科技自立自強能力顯著提升。希望本書的出版能夠為科技的發展,建設教育強國、科技強國貢獻一份微薄的力量。
李立宗
2023年3月 |
內容簡介:本書基于面向 Python 的 OpenCV(OpenCV for Python),介紹了圖像處理的方方面面。本書以 OpenCV 官方文檔的知識脈絡為主線,并對細節進行補充和說明。 書中不僅介紹了 OpenCV 函數的使用方法,還介紹了函數實現的算法原理。在介紹 OpenCV 函數的 使用方法時,提供了大量的程序示例。而且在介紹函數對圖像的處理前,往往先展示函數對數值、數組 的處理,方便讀者從數值的角度觀察和理解函數的處理過程和結果。在介紹具體的算法原理時,本書盡 量使用通俗易懂的語言和貼近生活的示例來說明問題,避免使用過多復雜抽象的公式。 |
目錄:第1章 OpenCV入門 1
1.1 如何使用 1
1.2 圖像處理基本操作 3
1.2.1 讀取圖像 4
1.2.2 顯示圖像 5
1.2.3 保存圖像 10
1.3 OpenCV貢獻庫 10
第2章 圖像處理基礎 12
2.1 圖像的基本表示方法 12
2.2 像素處理 16
2.3 使用numpy.array訪問像素 24
2.4 感興趣區域(ROI) 30
2.5 通道操作 32
2.5.1 通道拆分 33
2.5.2 通道合并 35
2.6 獲取圖像屬性 36
第3章 圖像運算 38
3.1 圖像加法運算 38
3.1.1 加號運算符 38
3.1.2 cv2.add()函數 39
3.2 圖像加權和 42
3.3 按位邏輯運算 44
3.3.1 按位與運算 44
3.3.2 按位或運算 48
3.3.3 按位非運算 49
3.3.4 按位異或運算 50
3.4 掩膜 51
3.5 圖像與數值的運算 54
3.6 位平面分解 56
3.7 圖像加密和解密 62
3.8 數字水印 66
3.8.1 原理 67
3.8.2 實現方法 70
3.8.3 例題 77
3.9 臉部打碼及解碼 78
3.9.1 按位與方式 78
3.9.2 ROI方式 82
第4章 色彩空間類型轉換 85
4.1 色彩空間基礎 85
4.1.1 GRAY色彩空間 85
4.1.2 XYZ色彩空間 86
4.1.3 YCrCb色彩空間 86
4.1.4 HSV色彩空間 87
4.1.5 HLS色彩空間 88
4.1.6 CIEL*a*b*色彩空間 89
4.1.7 CIEL*u*v*色彩空間 90
4.1.8 Bayer色彩空間 90
4.2 類型轉換函數 92
4.3 類型轉換實例 98
4.3.1 通過數組觀察轉換效果 98
4.3.2 圖像處理實例 102
4.4 HSV色彩空間討論 104
4.4.1 基礎知識 104
4.4.2 獲取指定顏色 105
4.4.3 標記指定顏色 107
4.4.4 標記膚色 111
4.4.5 實現藝術效果 112
4.5 alpha通道 113
第5章 幾何變換 117
5.1 縮放 117
5.2 翻轉 121
5.3 仿射 122
5.3.1 平移 123
5.3.2 旋轉 124
5.3.3 更復雜的仿射變換 125
5.4 透視 126
5.5 重映射 128
5.5.1 映射參數的理解 129
5.5.2 復制 130
5.5.3 繞x軸翻轉 132
5.5.4 繞y軸翻轉 134
5.5.5 繞x軸、y軸翻轉 136
5.5.6 x軸、y軸互換 138
5.5.7 圖像縮放 140
第6章 閾值處理 141
6.1 threshold函數 141
6.1.1 二值化閾值處理(cv2.THRESH_BINARY) 142
6.1.2 反二值化閾值處理(cv2.THRESH_BINARY_INV) 144
6.1.3 截斷閾值化處理(cv2.THRESH_TRUNC) 146
6.1.4 超閾值零處理(cv2.THRESH_TOZERO_INV) 147
6.1.5 低閾值零處理(cv2.THRESH_TOZERO) 149
6.2 Otsu處理 150
6.3 自適應閾值處理 153
第7章 圖像平滑處理 157
7.1 均值濾波 159
7.1.1 基本原理 159
7.1.2 函數語法 166
7.1.3 程序示例 167
7.2 方框濾波 168
7.2.1 基本原理 169
7.2.2 函數語法 169
7.2.3 程序示例 171
7.3 高斯濾波 176
7.3.1 基本原理 176
7.3.2 函數語法 177
7.3.3 程序示例 179
7.4 中值濾波 180
7.4.1 基本原理 180
7.4.2 函數語法 181
7.4.3 程序示例 181
7.5 雙邊濾波 182
7.5.1 基本原理 182
7.5.2 函數語法 184
7.5.3 程序示例 185
7.6 2D卷積 186
第8章 形態學操作 189
8.1 腐蝕 189
8.2 膨脹 194
8.3 通用形態學函數 199
8.4 開運算 199
8.5 閉運算 201
8.6 形態學梯度運算 203
8.7 禮帽運算 204
8.8 黑帽運算 205
8.9 核函數 207
第9章 圖像梯度 210
9.1 卷積基礎 210
9.2 Sobel理論基礎 214
9.3 Sobel算子及函數使用 216
9.3.1 參數ddepth 217
9.3.2 方向 221
9.3.3 實例 223
9.4 Scharr算子及函數使用 226
9.5 Sobel算子和Scharr算子的比較 231
9.6 Laplacian算子及函數使用 232
9.7 算子總結 234
第10章 Canny邊緣檢測 235
10.1 Canny邊緣檢測基礎 235
10.2 Canny函數及使用 239
第11章 圖像金字塔 241
11.1 理論基礎 241
11.2 pyrDown函數及使用 243
11.3 pyrUp函數及使用 245
11.4 采樣可逆性的研究 247
11.5 拉普拉斯金字塔 250
11.5.1 定義 250
11.5.2 應用 252
第12章 圖像輪廓 257
12.1 查找并繪制輪廓 257
12.1.1 查找圖像輪廓:findContours函數 257
12.1.2 繪制圖像輪廓:drawContours函數 265
12.1.3 輪廓實例 266
12.2 矩特征 270
12.2.1 矩的計算:moments函數 271
12.2.2 計算輪廓的面積:contourArea函數 273
12.2.3 計算輪廓的長度:arcLength函數 276
12.3 Hu矩 278
12.3.1 Hu矩函數 278
12.3.2 形狀匹配 282
12.4 輪廓擬合 284
12.4.1 矩形包圍框 285
12.4.2 最小包圍矩形框 287
12.4.3 最小包圍圓形 289
12.4.4 最優擬合橢圓 290
12.4.5 最優擬合直線 291
12.4.6 最小外包三角形 293
12.4.7 逼近多邊形 294
12.5 凸包 296
12.5.1 獲取凸包 297
12.5.2 凸缺陷 299
12.5.3 幾何學測試 302
12.6 利用形狀場景算法比較輪廓 306
12.6.1 計算形狀場景距離 306
12.6.2 計算Hausdorff距離 309
12.7 輪廓的特征值 312
12.7.1 寬高比 312
12.7.2 Extent 313
12.7.3 Solidity 314
12.7.4 等效直徑(Equivalent Diameter) 315
12.7.5 方向 316
12.7.6 掩膜和像素點 318
12.7.7 最大值和最小值及它們的位置 323
12.7.8 平均顏色及平均灰度 325
12.7.9 極點 326
第13章 直方圖處理 329
13.1 直方圖的含義 329
13.2 繪制直方圖 333
13.2.1 使用Numpy繪制直方圖 333
13.2.2 使用OpenCV繪制直方圖 335
13.2.3 使用掩膜繪制直方圖 341
13.3 直方圖均衡化 345
13.3.1 直方圖均衡化原理 347
13.3.2 直方圖均衡化處理 351
13.4 pyplot模塊介紹 353
13.4.1 subplot函數 353
13.4.2 imshow函數 354
第14章 傅里葉變換 358
14.1 理論基礎 358
14.2 Numpy實現傅里葉變換 362
14.2.1 實現傅里葉變換 363
14.2.2 實現逆傅里葉變換 364
14.3 OpenCV實現傅里葉變換 365
14.3.1 實現傅里葉變換 366
14.3.2 實現逆傅里葉變換 368
14.4 濾波處理 369
14.4.1 濾波原理 369
14.4.2 高通濾波實現 374
14.4.3 低通濾波實現 377
第15章 模板匹配 380
15.1 模板匹配基礎 380
15.2 多模板匹配 387
第16章 霍夫變換 393
16.1 霍夫直線變換 393
16.1.1 霍夫變換原理 393
16.1.2 HoughLines函數 399
16.1.3 HoughLinesP函數 401
16.2 霍夫圓環變換 403
第17章 圖像分割與提取 406
17.1 用分水嶺算法實現圖像分割與提取 406
17.1.1 算法原理 406
17.1.2 相關函數介紹 408
17.1.3 分水嶺算法圖像分割實例 418
17.2 交互式前景提取 421
17.2.1 矩形框提取 424
17.2.2 自定義模板提取 426
17.2.3 手繪模板提取 429
第18章 視頻處理 432
18.1 VideoCapture類 432
18.1.1 類函數介紹 432
18.1.2 捕獲攝像頭視頻 437
18.1.3 播放視頻文件 438
18.2 VideoWriter類 438
18.2.1 類函數介紹 439
18.2.2 保存視頻 440
18.3 視頻操作基礎 442
第19章 繪圖及交互 444
19.1 繪畫基礎 444
19.1.1 繪制直線 445
19.1.2 繪制矩形 446
19.1.3 繪制圓形 447
19.1.4 繪制橢圓 449
19.1.5 繪制多邊形 450
19.1.6 在圖形上繪制文字 451
19.2 鼠標交互 454
19.2.1 繪制隨機矩形 456
19.2.2 雙窗口繪制圖形 457
19.2.3 繪制多種不同圖形 458
19.3 滾動條 460
19.3.1 用滾動條實現調色板 461
19.3.2 滾動條交互 462
19.3.3 用滾動條作為開關 463
第20章 K近鄰算法 465
20.1 理論基礎 465
20.2 計算 468
20.2.1 歸一化 468
20.2.2 距離計算 469
20.3 手寫數字識別的原理 470
20.4 自定義函數手寫數字識別 475
20.5 K近鄰模塊的基本使用 482
20.6 K近鄰手寫數字識別 487
第21章 支持向量機 490
21.1 理論基礎 490
21.2 SVM流程 493
21.3 SVM員工表現預測 494
21.4 手寫數字識別 498
第22章 K均值聚類 508
22.1 理論基礎 508
22.1.1 分豆子 509
22.1.2 K均值聚類的基本步驟 512
22.2 K均值聚類模塊 512
22.3 單特征豆子分類 513
22.4 米粒分類 517
22.5 灰度圖像二值化 521
第23章 人臉識別 526
23.1 人臉檢測 526
23.1.1 基本原理 526
23.1.2 級聯分類器的使用 529
23.1.3 函數介紹 530
23.1.4 案例介紹 531
23.2 人臉識別基礎 534
23.2.1 人臉識別基本流程 534
23.2.2 OpenCV人臉識別基礎 535
23.3 LPBH人臉識別 536
23.3.1 基本原理 537
23.3.2 函數介紹 540
23.3.3 案例介紹 541
23.4 EigenFaces人臉識別 543
23.4.1 基本原理 543
23.4.2 函數介紹 543
23.4.3 案例介紹 544
23.5 Fisherfaces人臉識別 546
23.5.1 基本原理 546
23.5.2 函數介紹 547
23.5.3 案例介紹 548
23.6 人臉數據庫 549 |
序: |