1. 程式人生 > 其它 >OpenCV-Python 中文教程(搬運)目錄

OpenCV-Python 中文教程(搬運)目錄

OpenCV-Python 中文教程

OpenCV官方教程中文版(For Python)

OpenCV2-Python-Tutorials

段力輝 譯

說明:搬運自linux公社pdf檔案,粗略搬運,僅作個人筆記參考,有時間再美化

部分檔案參考:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html

索引目錄

 I 走進 OpenCV 10

II OpenCV 中的 Gui 特性 

III 核心操作 

IV OpenCV 中的影象處理(一)

IV OpenCV 中的影象處理(二)

IV OpenCV 中的影象處理(三)

IV OpenCV 中的影象處理(四)

IV OpenCV 中的影象處理(五)

IV OpenCV 中的影象處理(六)

V 影象特徵提取與描述(一) 

V 影象特徵提取與描述(二) 

VI 視訊分析 

VII 攝像機標定和 3D 重構 

VIII 機器學習 

IX 計算攝影學 

說明:搬運自linux公社pdf檔案,粗略搬運,僅作個人筆記參考,有時間再美化

部分檔案參考:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html

詳細目錄(譯者說明附在末尾)


I 走進 OpenCV 10


1 關於 OpenCV-Python 教程 10
2 在 在 Windows 上安裝 OpenCV-Python 11
3 在 在 Fedora 上安裝 OpenCV-Python 12

II OpenCV 中的 Gui 特性 13


4 圖片 13
4.1 讀入影象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 顯示影象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 儲存影象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 總結一下 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 視訊 18
5.1 用攝像頭捕獲視訊 . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2 從檔案中播放視訊 . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 儲存視訊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 OpenCV 中的繪圖函式 24
6.1 畫線 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 畫矩形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3 畫圓 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4 畫橢圓 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.5 畫多邊形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.6 在圖片上新增文字 . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 把滑鼠當畫筆 28
7.1 簡單演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2 高階一點的示例 . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8 用滑動條做調色盤 32
8.1 程式碼示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


III 核心操作 36


9 影象的基礎操作 36
9.1 獲取並修改畫素值 . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.2 獲取影象屬性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9.3 影象 ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9.4 拆分及合併影象通道 . . . . . . . . . . . . . . . . . . . . . . . . 40
9.5 為影象擴邊(填充) . . . . . . . . . . . . . . . . . . . . . . . . 41
10 影象上的算術運算 43
10.1影象加法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.2影象混合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.3按位運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
11 程式效能檢測及優化 47
11.1使用 OpenCV 檢測程式效率 . . . . . . . . . . . . . . . . . . . 47
11.2OpenCV 中的預設優化 . . . . . . . . . . . . . . . . . . . . . . 48
11.3在 IPython 中檢測程式效率 . . . . . . . . . . . . . . . . . . . 49
11.4更多 IPython 的魔法命令 . . . . . . . . . . . . . . . . . . . . . 51
11.5效率優化技術 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
12OpenCV 中的數學工具 53


IV OpenCV 中的影象處理 54


13 顏色空間轉換 54
13.1轉換顏色空間 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
13.2物體跟蹤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
13.3怎樣找到要跟蹤物件的 HSV 值? . . . . . . . . . . . . . . . . . 57
14 幾何變換 59
14.1擴充套件縮放 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
14.2平移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
14.3旋轉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
14.4仿射變換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
14.5透視變換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
15 影象閾值 66
15.1簡單閾值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
15.2自適應閾值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
15.3Otsu’s 二值化 . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
15.4Otsu’s 二值化是如何工作的? . . . . . . . . . . . . . . . . . . 72
16 影象平滑 75
16.1平均 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
16.2高斯模糊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
16.3中值模糊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
16.4雙邊濾波 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
17 形態學轉換 81
17.1腐蝕 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
17.2膨脹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
17.3開運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
17.4閉運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
17.5形態學梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
17.6禮帽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
17.7黑帽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
17.8形態學操作之間的關係 . . . . . . . . . . . . . . . . . . . . . . . 84
18 影象梯度 87
18.1Sobel 運算元和 Scharr 運算元 . . . . . . . . . . . . . . . . . . . . 87
18.2Laplacian 運算元 . . . . . . . . . . . . . . . . . . . . . . . . . . 87
19Canny 邊緣檢測 91
19.1原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.1噪聲去除 . . . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.2計算影象梯度 . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.3非極大值抑制 . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.4滯後閾值 . . . . . . . . . . . . . . . . . . . . . . . . . . 92
19.2OpenCV 中的 Canny 邊界檢測 . . . . . . . . . . . . . . . . . 92
20 影象金字塔 94
20.1原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
20.2使用金字塔進行影象融合 . . . . . . . . . . . . . . . . . . . . . 96
21OpenCV 中的輪廓 101
21.1初識輪廓 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
21.1.1什麼是輪廓 . . . . . . . . . . . . . . . . . . . . . . . . . 101
21.1.2怎樣繪製輪廓 . . . . . . . . . . . . . . . . . . . . . . . . 101
21.1.3輪廓的近似方法 . . . . . . . . . . . . . . . . . . . . . . 102
21.2輪廓特徵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
21.2.1矩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
21.2.2輪廓面積 . . . . . . . . . . . . . . . . . . . . . . . . . . 104
21.2.3輪廓周長 . . . . . . . . . . . . . . . . . . . . . . . . . . 105
21.2.4輪廓近似 . . . . . . . . . . . . . . . . . . . . . . . . . . 105
21.2.5凸包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
21.2.6凸性檢測 . . . . . . . . . . . . . . . . . . . . . . . . . . 107
21.2.7邊界矩形 . . . . . . . . . . . . . . . . . . . . . . . . . . 107
21.2.8最小外接圓 . . . . . . . . . . . . . . . . . . . . . . . . . 108
21.2.9橢圓擬合 . . . . . . . . . . . . . . . . . . . . . . . . . . 109
21.2.10 直線擬合 . . . . . . . . . . . . . . . . . . . . . . . . . . 109
21.3輪廓的性質 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.1長寬比 . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.2Extent . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.3Solidity . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.4Equivalent Diameter . . . . . . . . . . . . . . . . . . 112
21.3.5方向 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
21.3.6掩模和畫素點 . . . . . . . . . . . . . . . . . . . . . . . . 112
21.3.7最大值和最小值及它們的位置 . . . . . . . . . . . . . . . 113
21.3.8平均顏色及平均灰度 . . . . . . . . . . . . . . . . . . . . 113
21.3.9極點 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
21.4輪廓:更多函式 . . . . . . . . . . . . . . . . . . . . . . . . . . 115
21.4.1凸缺陷 . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
21.4.2Point Polygon Test . . . . . . . . . . . . . . . . . . . . 116
21.4.3形狀匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . 117
21.5輪廓的層次結構 . . . . . . . . . . . . . . . . . . . . . . . . . . 119
21.5.1什麼是層次結構 . . . . . . . . . . . . . . . . . . . . . . 119
21.5.2OpenCV 中層次結構 . . . . . . . . . . . . . . . . . . . 120
21.5.3輪廓檢索模式 . . . . . . . . . . . . . . . . . . . . . . . . 120
22 直方圖 124
22.1直方圖的計算,繪製與分析 . . . . . . . . . . . . . . . . . . . . 124
22.1.1統計直方圖 . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.1.2繪製直方圖 . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.1.3使用掩模 . . . . . . . . . . . . . . . . . . . . . . . . . . 128
22.2直方圖均衡化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
22.2.1OpenCV 中的直方圖均衡化 . . . . . . . . . . . . . . . . 132
22.2.2CLAHE 有限對比適應性直方圖均衡化 . . . . . . . . . . 132
22.32D 直方圖 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.3.1介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.3.2OpenCV 中的 2D 直方圖 . . . . . . . . . . . . . . . . . 135
22.3.3Numpy 中 2D 直方圖 . . . . . . . . . . . . . . . . . . . 136
22.3.4繪製 2D 直方圖 . . . . . . . . . . . . . . . . . . . . . . 136
22.4直方圖反向投影 . . . . . . . . . . . . . . . . . . . . . . . . . . 141
22.4.1Numpy 中的演算法 . . . . . . . . . . . . . . . . . . . . . 141
22.4.2OpenCV 中的反向投影 . . . . . . . . . . . . . . . . . . 143
23 影象變換 146
23.1傅立葉變換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
23.1.1Numpy 中的傅立葉變換 . . . . . . . . . . . . . . . . . . 146
23.1.2OpenCV 中的傅立葉變換 . . . . . . . . . . . . . . . . . 148
23.1.3DFT 的效能優化 . . . . . . . . . . . . . . . . . . . . . . 150
23.1.4為什麼拉普拉斯運算元是高通濾波器? . . . . . . . . . . . 152
24 模板匹配 155
24.1OpenCV 中的模板匹配 . . . . . . . . . . . . . . . . . . . . . . 155
24.2多物件的模板匹配 . . . . . . . . . . . . . . . . . . . . . . . . . 158
25Hough 直線變換 160
25.1OpenCV 中的霍夫變換 . . . . . . . . . . . . . . . . . . . . . . 161
25.2Probabilistic Hough Transform . . . . . . . . . . . . . . . . 163
26Hough 圓環變換 165
27 分水嶺演算法影象分割 168
27.1程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28 使用 GrabCut 演算法進行互動式前景提取 173
28.1演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174


V 影象特徵提取與描述 178


29 理解影象特徵 178
29.1解釋 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
30Harris 角點檢測 181
30.1OpenCV 中的 Harris 角點檢測 . . . . . . . . . . . . . . . . . 182
30.2亞畫素級精確度的角點 . . . . . . . . . . . . . . . . . . . . . . . 184
31Shi-Tomasi 角點檢測 & 適合於跟蹤的影象特徵 187
31.1程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
32 介紹 SIFT(Scale-Invariant Feature Transform) 190
33 介紹 SURF(Speeded-Up Robust Features) 195
33.1OpenCV 中的 SURF . . . . . . . . . . . . . . . . . . . . . . . 197
34 角點檢測的 FAST 演算法 200
34.1使用 FAST 演算法進行特徵提取 . . . . . . . . . . . . . . . . . . . 200
34.2機器學習的角點檢測器 . . . . . . . . . . . . . . . . . . . . . . . 201
34.3非極大值抑制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.4總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.5OpenCV 中 FAST 特徵檢測器 . . . . . . . . . . . . . . . . . . 202
35BRIEF(Binary Robust Independent Elementary Features) 205
35.1OpenCV 中的 BRIEF . . . . . . . . . . . . . . . . . . . . . . 205
36ORB (Oriented FAST and Rotated BRIEF) 207
36.1OpenCV 中的 ORB 演算法 . . . . . . . . . . . . . . . . . . . . . 208
37 特徵匹配 211
37.1Brute-Force 匹配的基礎 . . . . . . . . . . . . . . . . . . . . . 211
37.2對 ORB 描述符進行蠻力匹配 . . . . . . . . . . . . . . . . . . . 212
37.3匹配器物件是什麼? . . . . . . . . . . . . . . . . . . . . . . . . 213
37.4對 SIFT 描述符進行蠻力匹配和比值測試 . . . . . . . . . . . . . 213
37.5FLANN 匹配器 . . . . . . . . . . . . . . . . . . . . . . . . . . 214
38 使用特徵匹配和單應性查詢物件 218
38.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
38.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218


VI 視訊分析 222


39Meanshift 和 和 Camshift 222
39.1Meanshift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
39.2OpenCV 中的 Meanshift . . . . . . . . . . . . . . . . . . . . 223
39.3Camshift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
39.4OpenCV 中的 Camshift . . . . . . . . . . . . . . . . . . . . . 226
40 光流 231
40.1光流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
40.2Lucas-Kanade 法 . . . . . . . . . . . . . . . . . . . . . . . . . 232
40.3OpenCV 中的 Lucas-Kanade 光流 . . . . . . . . . . . . . . . 232
40.4OpenCV 中的稠密光流 . . . . . . . . . . . . . . . . . . . . . . 235
41 背景減除 238
41.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
41.2BackgroundSubtractorMOG . . . . . . . . . . . . . . . . . 238
41.3BackgroundSubtractorMOG2 . . . . . . . . . . . . . . . . . 239
41.4BackgroundSubtractorGMG . . . . . . . . . . . . . . . . . 240
41.5結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241


VII 攝像機標定和 3D 重構 243


42 攝像機標定 243
42.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
42.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
42.2.1設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
42.2.2標定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
42.2.3畸變校正 . . . . . . . . . . . . . . . . . . . . . . . . . . 247
42.3反向投影誤差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
43 姿勢估計 250
43.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
43.1.1渲染一個立方體 . . . . . . . . . . . . . . . . . . . . . . 252
44 對極幾何(Epipolar Geometry ) 254
44.1基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
44.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
45 立體影象中的深度地圖 259
45.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
45.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259


VIII 機器學習 261


46K 近鄰(k-Nearest Neighbour ) 261
46.1理解 K 近鄰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
46.1.1OpenCV 中的 kNN . . . . . . . . . . . . . . . . . . . . 262
46.2使用 kNN 對手寫數字 OCR . . . . . . . . . . . . . . . . . . . 266
46.2.1手寫數字的 OCR . . . . . . . . . . . . . . . . . . . . . . 266
46.2.2英文字母的 OCR . . . . . . . . . . . . . . . . . . . . . . 268
47 支援向量機 270
47.1理解 SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
47.1.1線性資料分割 . . . . . . . . . . . . . . . . . . . . . . . . 270
47.1.2非線性資料分割 . . . . . . . . . . . . . . . . . . . . . . 271
47.2使用 SVM 進行手寫資料 OCR . . . . . . . . . . . . . . . . . . 273
48K 值聚類 277
48.1理解 K 值聚類 . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
48.1.1T 恤大小問題 . . . . . . . . . . . . . . . . . . . . . . . . 277
48.1.2它是如何工作的? . . . . . . . . . . . . . . . . . . . . . 278
48.2OpenCV 中的 K 值聚類 . . . . . . . . . . . . . . . . . . . . . . 281
48.2.1理解函式的引數 . . . . . . . . . . . . . . . . . . . . . . 281
48.2.2僅有一個特徵的資料 . . . . . . . . . . . . . . . . . . . . 282
48.2.3顏色量化 . . . . . . . . . . . . . . . . . . . . . . . . . . 286


IX 計算攝影學 288


49 影象去噪 288
49.1OpenCV 中的影象去噪 . . . . . . . . . . . . . . . . . . . . . . 289
49.1.1cv2.fastNlMeansDenoisingColored() . . . . . . . . 290
49.1.2cv2.fastNlMeansDenoisingMulti() . . . . . . . . . . 290
50 影象修補 294
50.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
50.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
X 物件檢測 297
51 使用 Haar 分類器進行面部檢測 297
51.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
51.2OpenCV 中的 Haar 級聯檢測 . . . . . . . . . . . . . . . . . . 299

為什麼翻譯此書?
段力輝

1 為什麼使用 Python
  Python 作為一種高效簡潔的直譯式語言非常適合我們用來解決日常工作的問題。而且它簡單易學,初學者幾個小時就可以基本入門。再加上 Numpy 和 matplotlib 這兩個翅膀,Python 對資料分析的能力不遜於Matlab。Python 還被稱為是膠水語言,有很多軟體都提供了 Python 介面。尤其是在 linux 下,可以使用 Python 將不同的軟體組成一個工作流,發揮每一個軟體自己最大的優勢從而完成一個複雜的任務。比如我們可以使用 Mysql 儲存資料,使用 R 分析資料,使用 matplotlib 展示資料,使用OpenGL 進行 3D 建模,使用 Qt 構建漂亮的 GUI。而 Python 可以將他們聯合在一起構建一個強大的工作流。


2 為什麼使用 Python-OpenCV
  雖然 python 很強大,而且也有自己的影象處理庫 PIL,但是相對於OpenCV 來講,它還是弱小很多。跟很多開源軟體一樣 OpenCV 也提供了完善的 python 介面,非常便於呼叫。OpenCV 的穩定版是 2.4.8,最新版是 3.0,包含了超過 2500 個演算法和函式,幾乎任何一個能想到的成熟演算法都可以通過呼叫 OpenCV 的函式來實現,超級方便。

3 為什麼是這本書
  但是非常可惜關於在 Python 下使用 OpenCV 的書,除了這本線上教程之外,僅有一個 100 多頁的書 opencv computer vision with python(本書雖然挺好的,但是不夠全面,不能讓讀者完全瞭解 opencv 的現狀)。而我翻譯的這本書是來源於 OpenCV 的官方文件,內容全面,對各種的演算法的描述簡單易懂,而且不拘泥於長篇大論的數學推導,非常適合想使用OpenCV 解決實際問題的人,對他們來說具體的數學原理並不重要,重要是能解決實際問題。
在國內這本書可以說是第一本 Python_OpenCV 的譯作。

4 本書的時效性
  本書的編寫時針對最新的 OpenCV3.0 的,本版本還沒有正式釋出(但很穩定),其中的內容頁非常新,甚至用到了 2012 年才提出的演算法。因此本書的時效性上應該是沒有問題的。


5 本書的目標讀者
  本書針的讀者是高校學生,科研工作者,影象處理愛好者。對於這些人群,他們往往是帶著具體的問題,在苦苦尋找解決方案。為了一個小問題就讓他們去學習 C++ 這麼深奧的語言幾乎是不可能的。而 Python 的悄然興起給他們帶來的希望,如果說 C++ 是 tex 的話,那 Python 的易用性相當於 word。他們可以很快的看懂本書的所有程式碼,並可以學著使用它們來解決自己的問題,同時也能拓展自己的視野。別人經常說 Python 不夠快,但是對於上面的這些讀者,我相信這不是問題,現在我們日常使用的PC 機已經無比強大了,而且絕大多數情況下不會用到實時處理,更不會在嵌入式裝置上使用。因此這不是問題。

OpenCV-Python
段力輝
2014 年 1 月 30 日

OpenCV-Python 中文教程

OpenCV官方教程中文版(For Python)

OpenCV2-Python-Tutorials

段力輝 譯

說明:搬運自linux公社pdf檔案,粗略搬運,僅作個人筆記參考,有時間再美化

部分檔案參考:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html

索引目錄

 I 走進 OpenCV 10

II OpenCV 中的 Gui 特性 

III 核心操作 

IV OpenCV 中的影象處理(一)

IV OpenCV 中的影象處理(二)

IV OpenCV 中的影象處理(三)

IV OpenCV 中的影象處理(四)

IV OpenCV 中的影象處理(五)

IV OpenCV 中的影象處理(六)

V 影象特徵提取與描述(一) 

V 影象特徵提取與描述(二) 

VI 視訊分析 

VII 攝像機標定和 3D 重構 

VIII 機器學習 

IX 計算攝影學 

說明:搬運自linux公社pdf檔案,粗略搬運,僅作個人筆記參考,有時間再美化

部分檔案參考:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html

詳細目錄(譯者說明附在末尾)


I 走進 OpenCV 10


1 關於 OpenCV-Python 教程 10
2 在 在 Windows 上安裝 OpenCV-Python 11
3 在 在 Fedora 上安裝 OpenCV-Python 12

II OpenCV 中的 Gui 特性 13


4 圖片 13
4.1 讀入影象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 顯示影象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 儲存影象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 總結一下 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 視訊 18
5.1 用攝像頭捕獲視訊 . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2 從檔案中播放視訊 . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 儲存視訊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 OpenCV 中的繪圖函式 24
6.1 畫線 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 畫矩形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3 畫圓 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4 畫橢圓 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.5 畫多邊形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.6 在圖片上新增文字 . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 把滑鼠當畫筆 28
7.1 簡單演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2 高階一點的示例 . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8 用滑動條做調色盤 32
8.1 程式碼示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


III 核心操作 36


9 影象的基礎操作 36
9.1 獲取並修改畫素值 . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.2 獲取影象屬性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9.3 影象 ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9.4 拆分及合併影象通道 . . . . . . . . . . . . . . . . . . . . . . . . 40
9.5 為影象擴邊(填充) . . . . . . . . . . . . . . . . . . . . . . . . 41
10 影象上的算術運算 43
10.1影象加法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.2影象混合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.3按位運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
11 程式效能檢測及優化 47
11.1使用 OpenCV 檢測程式效率 . . . . . . . . . . . . . . . . . . . 47
11.2OpenCV 中的預設優化 . . . . . . . . . . . . . . . . . . . . . . 48
11.3在 IPython 中檢測程式效率 . . . . . . . . . . . . . . . . . . . 49
11.4更多 IPython 的魔法命令 . . . . . . . . . . . . . . . . . . . . . 51
11.5效率優化技術 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
12OpenCV 中的數學工具 53


IV OpenCV 中的影象處理 54


13 顏色空間轉換 54
13.1轉換顏色空間 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
13.2物體跟蹤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
13.3怎樣找到要跟蹤物件的 HSV 值? . . . . . . . . . . . . . . . . . 57
14 幾何變換 59
14.1擴充套件縮放 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
14.2平移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
14.3旋轉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
14.4仿射變換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
14.5透視變換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
15 影象閾值 66
15.1簡單閾值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
15.2自適應閾值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
15.3Otsu’s 二值化 . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
15.4Otsu’s 二值化是如何工作的? . . . . . . . . . . . . . . . . . . 72
16 影象平滑 75
16.1平均 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
16.2高斯模糊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
16.3中值模糊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
16.4雙邊濾波 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
17 形態學轉換 81
17.1腐蝕 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
17.2膨脹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
17.3開運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
17.4閉運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
17.5形態學梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
17.6禮帽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
17.7黑帽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
17.8形態學操作之間的關係 . . . . . . . . . . . . . . . . . . . . . . . 84
18 影象梯度 87
18.1Sobel 運算元和 Scharr 運算元 . . . . . . . . . . . . . . . . . . . . 87
18.2Laplacian 運算元 . . . . . . . . . . . . . . . . . . . . . . . . . . 87
19Canny 邊緣檢測 91
19.1原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.1噪聲去除 . . . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.2計算影象梯度 . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.3非極大值抑制 . . . . . . . . . . . . . . . . . . . . . . . . 91
19.1.4滯後閾值 . . . . . . . . . . . . . . . . . . . . . . . . . . 92
19.2OpenCV 中的 Canny 邊界檢測 . . . . . . . . . . . . . . . . . 92
20 影象金字塔 94
20.1原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
20.2使用金字塔進行影象融合 . . . . . . . . . . . . . . . . . . . . . 96
21OpenCV 中的輪廓 101
21.1初識輪廓 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
21.1.1什麼是輪廓 . . . . . . . . . . . . . . . . . . . . . . . . . 101
21.1.2怎樣繪製輪廓 . . . . . . . . . . . . . . . . . . . . . . . . 101
21.1.3輪廓的近似方法 . . . . . . . . . . . . . . . . . . . . . . 102
21.2輪廓特徵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
21.2.1矩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
21.2.2輪廓面積 . . . . . . . . . . . . . . . . . . . . . . . . . . 104
21.2.3輪廓周長 . . . . . . . . . . . . . . . . . . . . . . . . . . 105
21.2.4輪廓近似 . . . . . . . . . . . . . . . . . . . . . . . . . . 105
21.2.5凸包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
21.2.6凸性檢測 . . . . . . . . . . . . . . . . . . . . . . . . . . 107
21.2.7邊界矩形 . . . . . . . . . . . . . . . . . . . . . . . . . . 107
21.2.8最小外接圓 . . . . . . . . . . . . . . . . . . . . . . . . . 108
21.2.9橢圓擬合 . . . . . . . . . . . . . . . . . . . . . . . . . . 109
21.2.10 直線擬合 . . . . . . . . . . . . . . . . . . . . . . . . . . 109
21.3輪廓的性質 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.1長寬比 . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.2Extent . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.3Solidity . . . . . . . . . . . . . . . . . . . . . . . . . . 111
21.3.4Equivalent Diameter . . . . . . . . . . . . . . . . . . 112
21.3.5方向 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
21.3.6掩模和畫素點 . . . . . . . . . . . . . . . . . . . . . . . . 112
21.3.7最大值和最小值及它們的位置 . . . . . . . . . . . . . . . 113
21.3.8平均顏色及平均灰度 . . . . . . . . . . . . . . . . . . . . 113
21.3.9極點 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
21.4輪廓:更多函式 . . . . . . . . . . . . . . . . . . . . . . . . . . 115
21.4.1凸缺陷 . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
21.4.2Point Polygon Test . . . . . . . . . . . . . . . . . . . . 116
21.4.3形狀匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . 117
21.5輪廓的層次結構 . . . . . . . . . . . . . . . . . . . . . . . . . . 119
21.5.1什麼是層次結構 . . . . . . . . . . . . . . . . . . . . . . 119
21.5.2OpenCV 中層次結構 . . . . . . . . . . . . . . . . . . . 120
21.5.3輪廓檢索模式 . . . . . . . . . . . . . . . . . . . . . . . . 120
22 直方圖 124
22.1直方圖的計算,繪製與分析 . . . . . . . . . . . . . . . . . . . . 124
22.1.1統計直方圖 . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.1.2繪製直方圖 . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.1.3使用掩模 . . . . . . . . . . . . . . . . . . . . . . . . . . 128
22.2直方圖均衡化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
22.2.1OpenCV 中的直方圖均衡化 . . . . . . . . . . . . . . . . 132
22.2.2CLAHE 有限對比適應性直方圖均衡化 . . . . . . . . . . 132
22.32D 直方圖 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.3.1介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.3.2OpenCV 中的 2D 直方圖 . . . . . . . . . . . . . . . . . 135
22.3.3Numpy 中 2D 直方圖 . . . . . . . . . . . . . . . . . . . 136
22.3.4繪製 2D 直方圖 . . . . . . . . . . . . . . . . . . . . . . 136
22.4直方圖反向投影 . . . . . . . . . . . . . . . . . . . . . . . . . . 141
22.4.1Numpy 中的演算法 . . . . . . . . . . . . . . . . . . . . . 141
22.4.2OpenCV 中的反向投影 . . . . . . . . . . . . . . . . . . 143
23 影象變換 146
23.1傅立葉變換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
23.1.1Numpy 中的傅立葉變換 . . . . . . . . . . . . . . . . . . 146
23.1.2OpenCV 中的傅立葉變換 . . . . . . . . . . . . . . . . . 148
23.1.3DFT 的效能優化 . . . . . . . . . . . . . . . . . . . . . . 150
23.1.4為什麼拉普拉斯運算元是高通濾波器? . . . . . . . . . . . 152
24 模板匹配 155
24.1OpenCV 中的模板匹配 . . . . . . . . . . . . . . . . . . . . . . 155
24.2多物件的模板匹配 . . . . . . . . . . . . . . . . . . . . . . . . . 158
25Hough 直線變換 160
25.1OpenCV 中的霍夫變換 . . . . . . . . . . . . . . . . . . . . . . 161
25.2Probabilistic Hough Transform . . . . . . . . . . . . . . . . 163
26Hough 圓環變換 165
27 分水嶺演算法影象分割 168
27.1程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28 使用 GrabCut 演算法進行互動式前景提取 173
28.1演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174


V 影象特徵提取與描述 178


29 理解影象特徵 178
29.1解釋 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
30Harris 角點檢測 181
30.1OpenCV 中的 Harris 角點檢測 . . . . . . . . . . . . . . . . . 182
30.2亞畫素級精確度的角點 . . . . . . . . . . . . . . . . . . . . . . . 184
31Shi-Tomasi 角點檢測 & 適合於跟蹤的影象特徵 187
31.1程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
32 介紹 SIFT(Scale-Invariant Feature Transform) 190
33 介紹 SURF(Speeded-Up Robust Features) 195
33.1OpenCV 中的 SURF . . . . . . . . . . . . . . . . . . . . . . . 197
34 角點檢測的 FAST 演算法 200
34.1使用 FAST 演算法進行特徵提取 . . . . . . . . . . . . . . . . . . . 200
34.2機器學習的角點檢測器 . . . . . . . . . . . . . . . . . . . . . . . 201
34.3非極大值抑制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.4總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.5OpenCV 中 FAST 特徵檢測器 . . . . . . . . . . . . . . . . . . 202
35BRIEF(Binary Robust Independent Elementary Features) 205
35.1OpenCV 中的 BRIEF . . . . . . . . . . . . . . . . . . . . . . 205
36ORB (Oriented FAST and Rotated BRIEF) 207
36.1OpenCV 中的 ORB 演算法 . . . . . . . . . . . . . . . . . . . . . 208
37 特徵匹配 211
37.1Brute-Force 匹配的基礎 . . . . . . . . . . . . . . . . . . . . . 211
37.2對 ORB 描述符進行蠻力匹配 . . . . . . . . . . . . . . . . . . . 212
37.3匹配器物件是什麼? . . . . . . . . . . . . . . . . . . . . . . . . 213
37.4對 SIFT 描述符進行蠻力匹配和比值測試 . . . . . . . . . . . . . 213
37.5FLANN 匹配器 . . . . . . . . . . . . . . . . . . . . . . . . . . 214
38 使用特徵匹配和單應性查詢物件 218
38.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
38.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218


VI 視訊分析 222


39Meanshift 和 和 Camshift 222
39.1Meanshift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
39.2OpenCV 中的 Meanshift . . . . . . . . . . . . . . . . . . . . 223
39.3Camshift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
39.4OpenCV 中的 Camshift . . . . . . . . . . . . . . . . . . . . . 226
40 光流 231
40.1光流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
40.2Lucas-Kanade 法 . . . . . . . . . . . . . . . . . . . . . . . . . 232
40.3OpenCV 中的 Lucas-Kanade 光流 . . . . . . . . . . . . . . . 232
40.4OpenCV 中的稠密光流 . . . . . . . . . . . . . . . . . . . . . . 235
41 背景減除 238
41.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
41.2BackgroundSubtractorMOG . . . . . . . . . . . . . . . . . 238
41.3BackgroundSubtractorMOG2 . . . . . . . . . . . . . . . . . 239
41.4BackgroundSubtractorGMG . . . . . . . . . . . . . . . . . 240
41.5結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241


VII 攝像機標定和 3D 重構 243


42 攝像機標定 243
42.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
42.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
42.2.1設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
42.2.2標定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
42.2.3畸變校正 . . . . . . . . . . . . . . . . . . . . . . . . . . 247
42.3反向投影誤差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
43 姿勢估計 250
43.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
43.1.1渲染一個立方體 . . . . . . . . . . . . . . . . . . . . . . 252
44 對極幾何(Epipolar Geometry ) 254
44.1基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
44.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
45 立體影象中的深度地圖 259
45.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
45.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259


VIII 機器學習 261


46K 近鄰(k-Nearest Neighbour ) 261
46.1理解 K 近鄰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
46.1.1OpenCV 中的 kNN . . . . . . . . . . . . . . . . . . . . 262
46.2使用 kNN 對手寫數字 OCR . . . . . . . . . . . . . . . . . . . 266
46.2.1手寫數字的 OCR . . . . . . . . . . . . . . . . . . . . . . 266
46.2.2英文字母的 OCR . . . . . . . . . . . . . . . . . . . . . . 268
47 支援向量機 270
47.1理解 SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
47.1.1線性資料分割 . . . . . . . . . . . . . . . . . . . . . . . . 270
47.1.2非線性資料分割 . . . . . . . . . . . . . . . . . . . . . . 271
47.2使用 SVM 進行手寫資料 OCR . . . . . . . . . . . . . . . . . . 273
48K 值聚類 277
48.1理解 K 值聚類 . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
48.1.1T 恤大小問題 . . . . . . . . . . . . . . . . . . . . . . . . 277
48.1.2它是如何工作的? . . . . . . . . . . . . . . . . . . . . . 278
48.2OpenCV 中的 K 值聚類 . . . . . . . . . . . . . . . . . . . . . . 281
48.2.1理解函式的引數 . . . . . . . . . . . . . . . . . . . . . . 281
48.2.2僅有一個特徵的資料 . . . . . . . . . . . . . . . . . . . . 282
48.2.3顏色量化 . . . . . . . . . . . . . . . . . . . . . . . . . . 286


IX 計算攝影學 288


49 影象去噪 288
49.1OpenCV 中的影象去噪 . . . . . . . . . . . . . . . . . . . . . . 289
49.1.1cv2.fastNlMeansDenoisingColored() . . . . . . . . 290
49.1.2cv2.fastNlMeansDenoisingMulti() . . . . . . . . . . 290
50 影象修補 294
50.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
50.2程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
X 物件檢測 297
51 使用 Haar 分類器進行面部檢測 297
51.1基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
51.2OpenCV 中的 Haar 級聯檢測 . . . . . . . . . . . . . . . . . . 299

為什麼翻譯此書?
段力輝

1 為什麼使用 Python
  Python 作為一種高效簡潔的直譯式語言非常適合我們用來解決日常工作的問題。而且它簡單易學,初學者幾個小時就可以基本入門。再加上 Numpy 和 matplotlib 這兩個翅膀,Python 對資料分析的能力不遜於Matlab。Python 還被稱為是膠水語言,有很多軟體都提供了 Python 介面。尤其是在 linux 下,可以使用 Python 將不同的軟體組成一個工作流,發揮每一個軟體自己最大的優勢從而完成一個複雜的任務。比如我們可以使用 Mysql 儲存資料,使用 R 分析資料,使用 matplotlib 展示資料,使用OpenGL 進行 3D 建模,使用 Qt 構建漂亮的 GUI。而 Python 可以將他們聯合在一起構建一個強大的工作流。


2 為什麼使用 Python-OpenCV
  雖然 python 很強大,而且也有自己的影象處理庫 PIL,但是相對於OpenCV 來講,它還是弱小很多。跟很多開源軟體一樣 OpenCV 也提供了完善的 python 介面,非常便於呼叫。OpenCV 的穩定版是 2.4.8,最新版是 3.0,包含了超過 2500 個演算法和函式,幾乎任何一個能想到的成熟演算法都可以通過呼叫 OpenCV 的函式來實現,超級方便。

3 為什麼是這本書
  但是非常可惜關於在 Python 下使用 OpenCV 的書,除了這本線上教程之外,僅有一個 100 多頁的書 opencv computer vision with python(本書雖然挺好的,但是不夠全面,不能讓讀者完全瞭解 opencv 的現狀)。而我翻譯的這本書是來源於 OpenCV 的官方文件,內容全面,對各種的演算法的描述簡單易懂,而且不拘泥於長篇大論的數學推導,非常適合想使用OpenCV 解決實際問題的人,對他們來說具體的數學原理並不重要,重要是能解決實際問題。
在國內這本書可以說是第一本 Python_OpenCV 的譯作。

4 本書的時效性
  本書的編寫時針對最新的 OpenCV3.0 的,本版本還沒有正式釋出(但很穩定),其中的內容頁非常新,甚至用到了 2012 年才提出的演算法。因此本書的時效性上應該是沒有問題的。


5 本書的目標讀者
  本書針的讀者是高校學生,科研工作者,影象處理愛好者。對於這些人群,他們往往是帶著具體的問題,在苦苦尋找解決方案。為了一個小問題就讓他們去學習 C++ 這麼深奧的語言幾乎是不可能的。而 Python 的悄然興起給他們帶來的希望,如果說 C++ 是 tex 的話,那 Python 的易用性相當於 word。他們可以很快的看懂本書的所有程式碼,並可以學著使用它們來解決自己的問題,同時也能拓展自己的視野。別人經常說 Python 不夠快,但是對於上面的這些讀者,我相信這不是問題,現在我們日常使用的PC 機已經無比強大了,而且絕大多數情況下不會用到實時處理,更不會在嵌入式裝置上使用。因此這不是問題。

OpenCV-Python
段力輝
2014 年 1 月 30 日

    posted @ 2018-02-06 19:26  _Undo  閱讀(162626)  評論(0編輯  收藏  舉報     重新整理評論重新整理頁面返回頂部                     Copyright © 2022 _Undo
Powered by .NET 6 on Kubernetes