基 础 篇
第1章 初识OpenCV 2
1.1 什么是OpenCV 2
1.1.1 OpenCV与计算机视觉 2
1.1.2 OpenCV的发展 3
1.1.3 OpenCV 4带来了什么 4
1.2 安装OpenCV 4 4
1.2.1 在Windows系统中安装OpenCV 4 4
1.2.2 Image Watch插件的使用 12
1.2.3 在Ubuntu系统中安装
OpenCV 4 12
1.2.4 opencv_contrib扩展模块的
安装 15
1.2.5 安装过程中常见问题的解决方案 17
1.3 了解OpenCV的模块架构 18
1.4 源码示例程序展示 19
1.4.1 配置示例程序运行环境 19
1.4.2 边缘检测edge 21
1.4.3 K聚类kmeans 22
1.4.4 二维码识别qrcode 23
1.4.5 相机使用video_capture_starter 24
1.4.6 视频物体跟踪camshiftdemo 25
1.5 本章小结 26
第2章 数据载入、显示与保存 27
2.1 图像存储容器 27
2.1.1 Mat类介绍 27
2.1.2 Mat类构造与赋值 29
2.1.3 Mat类支持的运算 33
2.1.4 Mat类元素的读取 35
2.2 图像的读取与显示 37
2.2.1 图像读取函数imread 38
2.2.2 图像窗口函数namedWindow 39
2.2.3 图像显示函数imshow 40
2.3 视频加载与摄像头调用 40
2.3.1 视频数据的读取 40
2.3.2 摄像头的直接调用 42
2.4 数据保存 43
2.4.1 图像的保存 43
2.4.2 视频的保存 45
2.4.3 保存和读取XML和YMAL文件 47
2.5 本章小结 52
进 阶 篇
第3章 图像基本操作 54
3.1 图像颜色空间 54
3.1.1 颜色模型与转换 54
3.1.2 多通道分离与合并 59
3.2 图像像素操作处理 61
3.2.1 图像像素统计 62
3.2.2 两图像间的像素操作 66
3.2.3 图像二值化 71
3.2.4 LUT 76
3.3 图像变换 78
3.3.1 图像连接 78
3.3.2 图像尺寸变换 81
3.3.3 图像翻转变换 83
3.3.4 图像仿射变换 84
3.3.5 图像透视变换 88
3.3.6 极坐标变换 90
3.4 在图像上绘制几何图形 92
3.4.1 绘制圆形 92
3.4.2 绘制直线 93
3.4.3 绘制椭圆 93
3.4.4 绘制多边形 94
3.4.5 文字生成 95
3.5 感兴趣区域 97
3.6 图像“金字塔” 100
3.6.1 高斯“金字塔” 100
3.6.2 拉普拉斯“金字塔” 101
3.7 窗口交互操作 104
3.7.1 图像窗口滑动条 104
3.7.2 鼠标响应 106
3.8 本章小结 109
第4章 图像直方图与模板匹配 111
4.1 图像直方图的绘制 111
4.2 直方图操作 113
4.2.1 直方图归一化 113
4.2.2 直方图比较 116
4.3 直方图应用 120
4.3.1 直方图均衡化 120
4.3.2 直方图匹配 122
4.3.3 直方图反向投影 125
4.4 图像的模板匹配 127
4.5 本章小结 131
第5章 图像滤波 132
5.1 图像卷积 132
5.2 噪声的种类与生成 136
5.2.1 椒盐噪声 136
5.2.2 高斯噪声 139
5.3 线性滤波 142
5.3.1 均值滤波 142
5.3.2 方框滤波 145
5.3.3 高斯滤波 147
5.3.4 可分离滤波 151
5.4 非线性滤波 154
5.4.1 中值滤波 154
5.4.2 双边滤波 156
5.5 图像的边缘检测 159
5.5.1 边缘检测原理 159
5.5.2 Sobel算子 162
5.5.3 Scharr算子 165
5.5.4 生成边缘检测滤波器 167
5.5.5 Laplacian算子 168
5.5.6 Canny算法 170
5.6 本章小结 173
第6章 图像形态学操作 175
6.1 像素距离与连通域 175
6.1.1 图像像素距离变换 175
6.1.2 图像连通域分析 180
6.2 腐蚀和膨胀 187
6.2.1 图像腐蚀 188
6.2.2 图像膨胀 192
6.3 形态学应用 195
6.3.1 开运算 195
6.3.2 闭运算 197
6.3.3 形态学梯度 197
6.3.4 顶帽运算 198
6.3.5 黑帽运算 198
6.3.6 击中击不中变换 199
6.3.7 图像细化 202
6.4 本章小结 205
应 用 篇
第7章 目标检测 208
7.1 形状检测 208
7.1.1 直线检测 208
7.1.2 直线拟合 218
7.1.3 圆形检测 220
7.2 轮廓检测 223
7.2.1 轮廓发现与绘制 223
7.2.2 轮廓面积 228
7.2.3 轮廓长度(周长) 229
7.2.4 轮廓外接多边形 231
7.2.5 点到轮廓距离 236
7.2.6 凸包检测 237
7.3 矩的计算 239
7.3.1 几何矩与中心矩 239
7.3.2 Hu矩 241
7.3.3 基于Hu矩的轮廓匹配 243
7.4 点集拟合 245
7.5 QR二维码检测 248
7.6 本章小结 251
第8章 图像分析与修复 253
8.1 傅里叶变换 253
8.1.1 离散傅里叶变换 253
8.1.2 傅里叶变换进行卷积 260
8.1.3 离散余弦变换 262
8.2 积分图像 266
8.3 图像分割 270
8.3.1 漫水填充法 270
8.3.2 分水岭法 274
8.3.3 Grabcut法 277
8.3.4 Mean-Shift法 279
8.4 图像修复 282
8.5 本章小结 285
第9章 特征点检测与匹配 287
9.1 角点检测 287
9.1.1 显示关键点 287
9.1.2 Harris角点检测 290
9.1.3 Shi-Tomas角点检测 293
9.1.4 亚像素级别角点检测 296
9.2 特征点检测 298
9.2.1 关键点 298
9.2.2 描述子 299
9.2.3 SIFT特征点检测 300
9.2.4 SURF特征点检测 303
9.2.5 ORB特征点检测 306
9.3 特征点匹配 310
9.3.1 DescriptorMatcher类介绍 310
9.3.2 暴力匹配 312
9.3.3 显示特征点匹配结果 313
9.3.4 FLANN匹配 315
9.3.5 RANSAC优化特征点匹配 318
9.4 本章小结 322
第10章 立体视觉 323
10.1 单目视觉 323
10.1.1 单目相机模型 323
10.1.2 标定板角点提取 327
10.1.3 单目相机标定 331
10.1.4 单目相机校正 335
10.1.5 单目投影 339
10.1.6 单目位姿估计 341
10.2 双目视觉 346
10.2.1 双目相机模型 346
10.2.2 双目相机标定 347
10.2.3 双目相机校正 350
10.3 本章小结 353
第11章 视频分析 354
11.1 差值法检测移动物体 354
11.2 均值迁移法目标跟踪 357
11.2.1 均值迁移法实现的目标跟踪 357
11.2.2 自适应均值迁移法实现的目标跟踪 361
11.3 光流法目标跟踪 365
11.3.1 Farneback多项式扩展算法 366
11.3.2 基于LK稀疏光流法的跟踪 370
11.4 本章小结 375
提 高 篇
第12章 OpenCV与机器学习 378
12.1 OpenCV与传统机器学习 378
12.1.1 K均值 378
12.1.2 K近邻 383
12.1.4 随机森林 392
12.1.5 支持向量机 394
12.2 OpenCV与深度神经网络应用
实例 397
12.2.1 加载深度学习模型 397
12.2.2 图像识别 400
12.2.3 风格迁移 403
12.2.4 性别检测 405
12.3 本章小结 407