基本信息
源码名称:opencv-python 中文教程
源码大小:6.20M
文件格式:.pdf
开发语言:Python
更新时间:2019-08-08
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

目录
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
2
www.linuxidc.com
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
3
www.linuxidc.com
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黑帽 . . . . 
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
5
www.linuxidc.com
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
6
www.linuxidc.com
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
7
www.linuxidc.com
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
8
www.linuxidc.com
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