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 日