●第1章OPENCV入門1
1.1如何使用1
1.2圖像處理基本操作3
1.2.1讀取圖像3
1.2.2顯示圖像5
1.2.3保存圖像9
1.3OpenCV貢獻庫10
第2章圖像處理基礎11
2.1圖像的基本表示方法11
2.2像素處理15
2.3使用numpy.array訪問像素23
2.4感興趣區域(ROI)29
2.5通道操作32
2.5.1通道拆分32
2.5.2通道合並34
2.6獲取圖像屬性36
第3章圖像運算37
3.1圖像加法運算37
3.1.1加號運算符37
3.1.2cv2.add()函數38
3.2圖像加權和40
3.3按位邏輯運算43
3.3.1按位與運算43
3.3.2按位或運算46
3.3.3按位非運算47
3.3.4按位異或運算48
3.4掩模49
3.5圖像與數值的運算52
3.6位平面分解53
3.7圖像加密和解密59
3.8數字水印63
3.8.1原理64
3.8.2實現方法66
3.8.3例題73
3.9臉部打碼及解碼74
第4章色彩空間類型轉換77
4.1色彩空間基礎77
4.1.1GRAY色彩空間77
4.1.2XYZ色彩空間78
4.1.3YCrCb色彩空間78
4.1.4HSV色彩空間79
4.1.5HLS色彩空間80
4.1.6CIEL*a*b*色彩空間80
4.1.7CIEL*u*v*色彩空間81
4.1.8Bayer色彩空間82
4.2類型轉換函數82
4.3類型轉換實例88
4.3.1通過數組觀察轉換效果88
4.3.2圖像處理實例92
4.4HSV色彩空間討論93
4.4.1基礎知識93
4.4.2獲取指定顏色95
4.4.3標記指定顏色96
4.4.4標記膚色100
4.4.5實現藝術效果101
4.5alpha通道102
第5章幾何變換106
5.1縮放106
5.2翻轉110
5.3仿射111
5.3.1平移112
5.3.2旋轉113
5.3.3更復雜的仿射變換114
5.4透視115
5.5重映射117
5.5.1映射參數的理解117
5.5.2復制119
5.5.3繞x軸翻轉121
5.5.4繞y軸翻轉122
5.5.5繞x軸、y軸翻轉124
5.5.6x軸、y軸互換126
5.5.7圖像縮放128
第6章閾值處理130
6.1threshold函數130
6.1.1二值化閾值處理(cv2.THRESH_BINARY)131
6.1.2反二值化閾值處理(cv2.THRESH_BINARY_INV)133
6.1.3截斷閾值化處理(cv2.THRESH_TRUNC)135
6.1.4超閾值零處理(cv2.THRESH_TOZERO_INV)136
6.1.5低閾值零處理(cv2.THRESH_TOZERO)138
6.2自適應閾值處理139
6.3Otsu處理141
第7章圖像平滑處理144
7.1均值濾波146
7.1.1基本原理146
7.1.2函數語法150
7.1.3程序示例150
7.2方框濾波152
7.2.1基本原理152
7.2.2函數語法153
7.2.3程序示例154
7.3高斯濾波156
7.3.1基本原理156
7.3.2函數語法158
7.3.3程序示例159
7.4中值濾波159
7.4.1基本原理160
7.4.2函數語法161
7.4.3程序示例161
7.5雙邊濾波162
7.5.1基本原理162
7.5.2函數語法164
7.5.3程序示例164
7.62D卷積166
第8章形態學操作168
8.1腐蝕168
8.2膨脹173
8.3通用形態學函數178
8.4開運算179
8.5閉運算180
8.6形態學梯度運算182
8.7禮帽運算183
8.8黑帽運算185
8.9核函數186
第9章圖像梯度189
9.1Sobel理論基礎189
9.2Sobel算子及函數使用191
9.2.1參數ddepth192
9.2.2方向195
9.2.3實例196
9.3Scharr算子及函數使用200
9.4Sobel算子和Scharr算子的比較204
9.5Laplacian算子及函數使用206
9.6算子總結208
第10章CANNY邊緣檢測209
10.1Canny邊緣檢測基礎209
10.2Canny函數及使用213
第11章圖像金字塔215
11.1理論基礎215
11.2pyrDown函數及使用217
11.3pyrUp函數及使用219
11.4采樣可逆性的研究220
11.5拉普拉斯金字塔223
11.5.1定義223
11.5.2應用225
第12章圖像輪廓229
12.1查找並繪制輪廓229
12.1.1查找圖像輪廓:findContours函數229
12.1.2繪制圖像輪廓:drawContours函數237
12.1.3輪廓實例238
12.2矩特征240
12.2.1矩的計算:moments函數241
12.2.2計算輪廓的面積:contourArea函數243
12.2.3計算輪廓的長度:arcLength函數246
12.3Hu矩248
12.3.1Hu矩函數248
12.3.2形狀匹配252
12.4輪廓擬合254
12.4.1矩形包圍框254
12.4.2最小包圍矩形框257
12.4.3最小包圍圓形259
12.4.4很優擬合橢圓260
12.4.5很優擬合直線261
12.4.6最小外包三角形262
12.4.7逼近多邊形263
12.5凸包266
12.5.1獲取凸包267
12.5.2凸缺陷268
12.5.3幾何學測試270
12.6利用形狀場景算法比較輪廓275
12.6.1計算形狀場景距離275
12.6.2計算Hausdorff距離278
12.7輪廓的特征值280
12.7.1寬高比280
12.7.2Extent281
12.7.3Solidity282
12.7.4等效直徑(EquivalentDiameter)283
12.7.5方向284
12.7.6掩模和像素點286
12.7.7優選值和最小值及它們的位置291
12.7.8平均顏色及平均灰度293
12.7.9極點294
第13章直方圖處理297
13.1直方圖的含義297
13.2繪制直方圖301
13.2.1使用Numpy繪制直方圖301
13.2.2使用OpenCV繪制直方圖302
13.2.3使用掩模繪制直方圖307
13.3直方圖均衡化312
13.3.1直方圖均衡化原理313
13.3.2直方圖均衡化處理317
13.4pyplot模塊介紹319
13.4.1subplot函數319
13.4.2imshow函數320
第14章傅裡葉變換324
14.1理論基礎324
14.2Numpy實現傅裡葉變換328
14.2.1實現傅裡葉變換329
14.2.2實現逆傅裡葉變換330
14.2.3高通濾波示例331
14.3OpenCV實現傅裡葉變換333
14.3.1實現傅裡葉變換333
14.3.2實現逆傅裡葉變換335
14.3.3低通濾波示例336
第15章模板匹配339
15.1模板匹配基礎339
15.2多模板匹配345
第16章霍夫變換351
16.1霍夫直線變換351
16.1.1霍夫變換原理351
16.1.2HoughLines函數357
16.1.3HoughLinesP函數359
16.2霍夫圓環變換361
第17章圖像分割與提取364
17.1用分水嶺算法實現圖像分割與提取364
17.1.1算法原理364
17.1.2相關函數介紹366
17.1.3分水嶺算法圖像分割實例375
17.2交互式前景提取376
第18章視頻處理383
18.1VideoCapture類383
18.1.1類函數介紹383
18.1.2捕獲攝像頭視頻387
18.1.3播放視頻文件388
18.2VideoWriter類389
18.2.1類函數介紹389
18.2.2保存視頻391
18.3視頻操作基礎392
第19章繪圖及交互393
19.1繪畫基礎393
19.1.1繪制直線394
19.1.2繪制矩形394
19.1.3繪制圓形395
19.1.4繪制橢圓397
19.1.5繪制多邊形398
19.1.6在圖形上繪制文字400
19.2鼠標交互402
19.2.1簡單示例404
19.2.2進階示例405
19.3滾動條407
19.3.1用滾動條實現調色板408
19.3.2用滾動條控制閾值處理參數409
19.3.3用滾動條作為開關410
第20章K近鄰算法412
20.1理論基礎412
20.2計算415
20.2.1歸一化415
20.2.2距離計算416
20.2手寫數字識別的原理417
20.3自定義函數手寫數字識別421
20.4K近鄰模塊的基本使用427
20.5K近鄰手寫數字識別429
第21章支持向量機431
21.1理論基礎431
21.2SVM案例介紹434
第22章K均值聚類439
22.1理論基礎439
22.1.1分豆子439
22.1.2K均值聚類的基本步驟441
22.2K均值聚類模塊441
22.3簡單示例442
第23章人臉識別448
23.1人臉檢測448
23.1.1基本原理448
23.1.2級聯分類器的使用451
23.1.3函數介紹452
23.1.4案例介紹453
23.2LBPH人臉識別454
23.2.1基本原理454
23.2.2函數介紹456
23.2.3案例介紹457
23.3EigenFaces人臉識別458
23.3.1基本原理458
23.3.2函數介紹459
23.3.3案例介紹460
23.4Fisherfaces人臉識別461
23.4.1基本原理461
23.4.2函數介紹463
23.4.3案例介紹464
23.5人臉數據庫465
參與文獻467
附錄A範例470
本書基於面向Python的OpenCV(OpenCVforPython),介紹了圖像處理的方方面面。本書以OpenCV官方文檔的知識脈絡為主線,並對細節進行補充和說明。書中不僅介紹了OpenCV函數的使用方法,還介紹了函數實現的算法原理。在介紹OpenCV函數的使用方法時,提供了大量的程序示例。而且在介紹函數對圖像的處理前,往往先展示函數對數值、數組的處理,方便讀者從數值的角度觀察和理解函數的處理過程和結果。在介紹具體的算法原理時,本書盡量使用通俗易懂的語言和貼近生活的示例來說明問題,避免使用過多復雜抽像的公式。本書適合計算機視覺領域的初學者閱讀,包括在校學生、教師、專業技術人員、圖像處理愛好者。