导语
内容提要
OpenCV是一个开源、跨平台的计算机视觉库,近年来成为了初学者快速入门计算机视觉的首选工具之一。本书旨在让读者快速实现从入门到掌握这一工具。
本书首先通过编写实用案例来描述OpenCV图像处理的过程,围绕案例,解析在图像处理过程中所使用的功能函数,说明其中参数调用配置、使用函数的原理及其应用的场景,并且解析函数调用的细节,让读者在学习实用案例的过程中逐渐掌握不同功能函数的用法、用途,明白其中所使用的条件;其次,通过展示OpenCV库进行图像和视频的采集、处理和分析的流程,让读者了解、学习图像处理的具体流程框架以及逻辑顺序,与案例共同解析,感受到真实项目中所涉及的应用过程。本书先让读者了解案例,再分析案例中的函数调用,让读者对OpenCV图像处理操作在实际项目中的具体应用过程有更加直观的感受,这也是本书的亮眼部分。
本书适合计算机及模式识别、机械电子工程、自动化等相关领域的科研人员和工程技术人员参考使用,也可作为高等学校智能感知工程、机械电子工程、电子信息、自动化、计算机等相关专业的本科生和研究生的教学和参考用书。
目录
基础知识篇
第1章 C++语言介绍
1.1 C++语言程序设计
1.1.1 变量的定义和赋值
1.1.2 数据类型和运算符
1.1.3 输入与输出
1.2 C++语言基本结构
1.2.1 顺序结构
1.2.2 选择结构
1.2.3 循环结构
1.3 C++程序基本结构
1.3.1 头文件
1.3.2 命名空间
1.3.3 全局变量
1.3.4 main()函数
1.3.5 局部变量
1.3.6 函数
1.3.7 注释
第2章 OpenCV概述
2.1 OpenCV介绍
2.2 机器视觉与OpenCV发展史
2.2.1 机器视觉发展史
2.2.2 OpenCV发展史
2.3 OpenCV的应用与前景
第3章 OpenCV的环境搭建
3.1 OpenCV 4.7.0简介
3.2 安装OpenCV的准备工作
3.3 安装步骤
3.4 安装环境配置
OpenCV基础应用篇
第4章 图像与视频的读取
4.1 读取图像
4.2 读取视频
4.3 调用摄像头
4.4 功能函数
4.4.1 Mat类对象
4.4.2 VideoCapture类对象
4.4.3 读取图片、视频功能函数“imread”
4.4.4 图片、视频和摄像头显示功能函数“imshow”
4.4.5 图像刷新功能函数“waitKey”
4.5 代码演示
第5章 图像和视频的保存
5.1 保存目标图像
5.2 图像保存功能函数“imwrite”
5.3 图像保存代码演示
5.4 保存目标视频
5.5 视频保存功能函数
5.5.1 视频宽度属性函数“CAP_PROP_FRAME_WIDTH”
5.5.2 视频高度属性函数“CAP_PROP_FRAME_HEIGHT”
5.5.3 视频总帧数属性函数“CAP_PROP_FRAME_COUNT”
5.5.4 视频帧率属性函数“CAP_PROP_FPS”
5.5.5 VideoWriter类对象
5.5.6 视频文件关闭释放函数“release”
5.6 视频保存代码演示
第6章 图像的预处理操作
6.1 图像颜色空间转换
6.1.1 图像灰度变换
6.1.2 颜色空间转换函数“cvtColor”
6.1.3 图像灰度变换代码演示
6.2 高斯模糊
6.2.1 高斯模糊函数“GaussianBlur”
6.2.2 高斯模糊代码演示
6.3 中值滤波
6.3.1 中值滤波函数“medianBlur”
6.3.2 中值滤波代码演示
6.4 边缘检测
6.4.1 边缘检测函数“Canny”
6.4.2 边缘检测流程代码演示
6.5 图像的腐蚀与膨胀
6.5.1 图像二值化函数“threshold”
6.5.2 OTSU算法
6.5.3 TRIANGLE(三角法)算法
6.5.4 获取结构元素函数“getStructuringElement”
6.5.5 图像的膨胀操作函数“dilate”
6.5.6 图像的腐蚀操作函数“erode”
6.5.7 图像的膨胀与腐蚀操作代码演示
第7章 图像的绘制
7.1 创建、绘制自定义图像
7.2 功能函数
7.2.1 图像创建函数“Mat”
7.2.2 圆形绘制函数“circle”
7.2.3 矩形绘制函数“rectangle”
7.2.4 文本放置函数“putText”
7.3 代码演示
OpenCV进阶篇
第8章 获得翘曲图片
8.1 目标图像
8.2 获得目标像素点坐标
8.3 创建结果像素点坐标
8.4 获得图像透视变换矩阵
8.5 图像透视变换
8.5.1 获取透视变换矩阵函数“getPerspectiveTransform”
8.5.2 透视变换函数“warpPerspective”
8.6 案例优化
8.7 代码演示
第9章 几何形状检测
9.1 目标图像
9.2 图像的预处理
9.3 构建检测识别模块
9.3.1 形状轮廓检测标记功能
9.3.2 形状轮廓判断标识功能
9.4 功能函数
9.4.1 轮廓查找函数“findContours”
9.4.2 弧长计算函数“arcLength”
9.4.3 多边形拟合函数“approxPolyDP”
9.4.4 边界矩形函数“boundingRect”
9.4.5 轮廓绘制函数“drawContours”
9.5 案例优化
9.6 代码演示
第10章 人脸检测
10.1 目标图像
10.2 人脸识别相关概念
10.2.1 级联分类器
10.2.2 Haar人脸特征
10.2.3 积分图加速法
10.2.4 AdaBoost学习算法
10.2.5 强分类器的级联
10.3 利用级联分类器进行人脸识别
10.4 功能函数
10.4.1 CascadeClassifier
10.4.2 detectMultiScale
10.5 代码演示
OpenCV提高篇
第11章 创建颜色选择器
11.1 使用VS 2017创建颜色选择器
11.1.1 创建调节面板
11.1.2 HSV颜色空间
11.1.3 创建颜色遮罩窗口与视频捕捉窗口
11.1.4 功能函数
11.1.5 案例优化
11.1.6 代码演示
11.2 使用VS Code创建颜色选择器
11.2.1 调用摄像头
11.2.2 视频翻转
11.2.3 进行颜色空间转换
11.2.4 设置颜色通道
11.2.5 创建遮罩
11.2.6 创建窗口
11.2.7 创建Trackbar
11.2.8 调节各个颜色通道值
11.2.9 代码演示
第12章 跟踪、绘制颜色路径
12.1 使用VS 2017跟踪、绘制颜色路径
12.1.1 寻找目标颜色,获取颜色轮廓
12.1.2 获取颜色轮廓关键点向量
12.1.3 绘制关键点的行动路径
12.1.4 案例优化
12.1.5 代码演示
12.2 使用VS Code跟踪、绘制颜色路径
12.2.1 调用摄像头
12.2.2 视频翻转
12.2.3 进行颜色空间转换
12.2.4 设置颜色通道
12.2.5 创建遮罩
12.2.6 创建窗口
12.2.7 创建Trackbar
12.2.8 确定目标颜色通道值
12.2.9 定义矩阵向量
12.2.10 进行颜色空间转换
12.2.11 轮廓检测
12.2.12 过滤干扰项
12.2.13 轮廓绘制
12.2.14 矩形绘制
12.2.15 创建遮罩
12.2.16 颜色检测
12.2.17 圆形绘制
12.2.18 轨迹绘制
12.2.19 代码演示
第13章 文档扫描
13.1 VS 2017文档扫描
13.1.1 图像的预处理
13.1.2 轮廓获取
13.1.3 角点获取
13.1.4 文档翘曲
13.1.5 案例优化
13.1.6 代码演示
13.2 VS Code文档扫描
13.2.1 读取目标图像
13.2.2 预处理:高斯模糊
13.2.3 预处理:边缘检测
13.2.4 预处理:膨胀操作
13.2.5 预处理:腐蚀操作
13.2.6 定义矩阵向量
13.2.7 轮廓检测
13.2.8 过滤干扰项
13.2.9 得到轮廓
13.2.10 轮廓坐标点排序
13.2.11 获得图像透视变换矩阵
13.2.12 图像透视变换
13.2.13 显示结果图像
13.2.14 代码演示
OpenCV技术篇
第14章 OpenCV与机器学习
14.1 传统机器学习
14.1.1 逻辑回归
14.1.2 K近邻
14.1.3 支持向量机(SVM)
14.1.4 贝叶斯网络
14.2 OpenCV与深度学习
14.2.1 用GoogLeNet模型实现图像分类
14.2.2 用SSD模型实现对象检测
14.2.3 用FCN模型实现图像分割
14.2.4 用CNN模型预测年龄和性别
14.2.5 用GOTURN模型实现对象跟踪
第15章 基于深度学习的路面病害检测案例
15.1 深度学习在路面病害检测中的应用背景
15.2 数据集构建
15.3 基于DeepLabV3+的路面病害检测方法
15.3.1 模型改进
15.3.2 评价指标
15.3.3 模型训练与测试
15.3.4 不同模型的对比实验
15.3.5 不同模型检测病害的可视化效果对比
参考文献