描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787122449825
(1)分为5个部分:基础知识篇、OpenCV基础应用篇、OpenCV进阶篇、OpenCV提高篇、OpenCV技术篇,逐层深入。(2)本书以实用案例为中心,分析解释函数调用原理,展示函数应用场景,不同的案例包含各不同的使用场景,从传统的图像处理到现代深度学习的模块,一步步深化OpenCV图像处理的技术。
OpenCV是一个开源、跨平台的计算机视觉库,近年来成为了初学者快速入门计算机视觉的首选工具之一。本书旨在让读者快速实现从入门到掌握这一工具。本书首先通过编写实用案例来描述OpenCV图像处理的过程,围绕案例,解析在图像处理过程中所使用的功能函数,说明其中参数调用配置、使用函数的原理及其应用的场景,并且解析函数调用的细节,让读者在学习实用案例的过程中逐渐掌握不同功能函数的用法、用途,明白其中所使用的条件;其次,通过展示OpenCV库进行图像和视频的采集、处理和分析的流程,让读者了解、学习图像处理的具体流程框架以及逻辑顺序,与案例共同解析,感受到真实项目中所涉及的应用过程。本书先让读者了解案例,再分析案例中的函数调用,让读者对OpenCV图像处理操作在实际项目中的具体应用过程有更加直观的感受,这也是本书的亮眼部分。本书适合计算机及模式识别、机械电子工程、自动化等相关领域的科研人员和工程技术人员参考使用,也可作为高等学校智能感知工程、机械电子工程、电子信息、自动化、计算机等相关专业的本科生和研究生的教学和参考用书。
基础知识篇
第1章 C++语言介绍 002
1.1 C++语言程序设计 002
1.1.1 变量的定义和赋值 002
1.1.2 数据类型和运算符 003
1.1.3 输入与输出 004
1.2 C++语言基本结构 004
1.2.1 顺序结构 004
1.2.2 选择结构 005
1.2.3 循环结构 006
1.3 C++程序基本结构 007
1.3.1 头文件 007
1.3.2 命名空间 007
1.3.3 全局变量 008
1.3.4 main()函数 009
1.3.5 局部变量 011
1.3.6 函数 011
1.3.7 注释 012
第2章 OpenCV 概述 014
2.1 OpenCV 介绍 014
2.2 机器视觉与OpenCV 发展史 015
2.2.1 机器视觉发展史 015
2.2.2 OpenCV发展史 016
2.3 OpenCV 的应用与前景 017
第3章 OpenCV 的环境搭建 018
3.1 OpenCV 4.7.0 简介 018
3.2 安装OpenCV 的准备工作 018
3.3 安装步骤 021
3.4 安装环境配置 023
OpenCV 基础应用篇
第4章 图像与视频的读取 028
4.1 读取图像 028
4.2 读取视频 029
4.3 调用摄像头 030
4.4 功能函数 031
4.4.1 Mat类对象 031
4.4.2 VideoCapture类对象 031
4.4.3 读取图片、视频功能函数“imread” 032
4.4.4 图片、视频和摄像头显示功能函数“imshow” 032
4.4.5 图像刷新功能函数“waitKey” 032
4.5 代码演示 033
第5章 图像和视频的保存 035
5.1 保存目标图像 035
5.2 图像保存功能函数“imwrite” 035
5.3 图像保存代码演示 036
5.4 保存目标视频 036
5.5 视频保存功能函数 037
5.5.1 视频宽度属性函数“CAP_PROP_FRAME_WIDTH” 037
5.5.2 视频高度属性函数“CAP_PROP_FRAME_HEIGHT” 038
5.5.3 视频总帧数属性函数“CAP_PROP_FRAME_COUNT” 038
5.5.4 视频帧率属性函数“CAP_PROP_FPS” 038
5.5.5 VideoWriter类对象 038
5.5.6 视频文件关闭释放函数“release” 039
5.6 视频保存代码演示 040
第6章 图像的预处理操作 042
6.1 图像颜色空间转换 042
6.1.1 图像灰度变换 042
6.1.2 颜色空间转换函数“cvtColor” 044
6.1.3 图像灰度变换代码演示 045
6.2 高斯模糊 045
6.2.1 高斯模糊函数“GaussianBlur” 047
6.2.2 高斯模糊代码演示 048
6.3 中值滤波 048
6.3.1 中值滤波函数“medianBlur” 049
6.3.2 中值滤波代码演示 050
6.4 边缘检测 050
6.4.1 边缘检测函数“Canny” 052
6.4.2 边缘检测流程代码演示 053
6.5 图像的腐蚀与膨胀 053
6.5.1 图像二值化函数“threshold” 055
6.5.2 OTSU算法 056
6.5.3 TRIANGLE (三角法)算法 058
6.5.4 获取结构元素函数“getStructuringElement” 059
6.5.5 图像的膨胀操作函数“dilate” 060
6.5.6 图像的腐蚀操作函数“erode” 060
6.5.7 图像的膨胀与腐蚀操作代码演示 061
第7章 图像的绘制 063
7.1 创建、绘制自定义图像 063
7.2 功能函数 065
7.2.1 图像创建函数“Mat” 065
7.2.2 圆形绘制函数“circle” 066
7.2.3 矩形绘制函数“rectangle” 066
7.2.4 文本放置函数“putText” 067
7.3 代码演示 068
OpenCV 进阶篇
第8章 获得翘曲图片 070
8.1 目标图像 070
8.2 获得目标像素点坐标 071
8.3 创建结果像素点坐标 071
8.4 获得图像透视变换矩阵 072
8.5 图像透视变换 072
8.5.1 获取透视变换矩阵函数“getPerspectiveTransform” 073
8.5.2 透视变换函数“warpPerspective” 073
8.6 案例优化 074
8.7 代码演示 075
第9章 几何形状检测 076
9.1 目标图像 076
9.2 图像的预处理 076
9.3 构建检测识别模块 078
9.3.1 形状轮廓检测标记功能 078
9.3.2 形状轮廓判断标识功能 079
9.4 功能函数 080
9.4.1 轮廓查找函数“findContours” 080
9.4.2 弧长计算函数“arcLength” 082
9.4.3 多边形拟合函数“approxPolyDP” 082
9.4.4 边界矩形函数“boundingRect” 083
9.4.5 轮廓绘制函数“drawContours” 083
9.5 案例优化 084
9.6 代码演示 085
第10章 人脸检测 088
10.1 目标图像 088
10.2 人脸识别相关概念 089
10.2.1 级联分类器 089
10.2.2 Haar人脸特征 089
10.2.3 积分图加速法 090
10.2.4 AdaBoost学习算法 090
10.2.5 强分类器的级联 092
10.3 利用级联分类器进行人脸识别 092
10.4 功能函数 093
10.4.1 CascadeClassifier 093
10.4.2 detectMultiScale 094
10.5 代码演示 095
OpenCV 提高篇
第11章 创建颜色选择器 098
11.1 使用VS 2017 创建颜色选择器 098
11.1.1 创建调节面板 098
11.1.2 HSV颜色空间 099
11.1.3 创建颜色遮罩窗口与视频捕捉窗口 100
11.1.4 功能函数 101
11.1.5 案例优化 103
11.1.6 代码演示 104
11.2 使用VS Code 创建颜色选择器 105
11.2.1 调用摄像头 106
11.2.2 视频翻转 107
11.2.3 进行颜色空间转换 108
11.2.4 设置颜色通道 111
11.2.5 创建遮罩 112
11.2.6 创建窗口 114
11.2.7 创建Trackbar 115
11.2.8 调节各个颜色通道值 116
11.2.9 代码演示 118
第12章 跟踪、绘制颜色路径 122
12.1 使用VS 2017 跟踪、绘制颜色路径 122
12.1.1 寻找目标颜色,获取颜色轮廓 123
12.1.2 获取颜色轮廓关键点向量 123
12.1.3 绘制关键点的行动路径 124
12.1.4 案例优化 124
12.1.5 代码演示 125
12.2 使用VS Code 跟踪、绘制颜色路径 128
12.2.1 调用摄像头 128
12.2.2 视频翻转 129
12.2.3 进行颜色空间转换 130
12.2.4 设置颜色通道 130
12.2.5 创建遮罩 131
12.2.6 创建窗口 132
12.2.7 创建Trackbar 133
12.2.8 确定目标颜色通道值 135
12.2.9 定义矩阵向量 135
12.2.10 进行颜色空间转换 136
12.2.11 轮廓检测 137
12.2.12 过滤干扰项 138
12.2.13 轮廓绘制 142
12.2.14 矩形绘制 144
12.2.15 创建遮罩 145
12.2.16 颜色检测 145
12.2.17 圆形绘制 145
12.2.18 轨迹绘制 146
12.2.19 代码演示 147
第13章 文档扫描 150
13.1 VS 2017 文档扫描 150
13.1.1 图像的预处理 150
13.1.2 轮廓获取 151
13.1.3 角点获取 153
13.1.4 文档翘曲 154
13.1.5 案例优化 155
13.1.6 代码演示 155
13.2 VS Code 文档扫描 158
13.2.1 读取目标图像 158
13.2.2 预处理:高斯模糊 159
13.2.3 预处理:边缘检测 160
13.2.4 预处理:膨胀操作 163
13.2.5 预处理:腐蚀操作 165
13.2.6 定义矩阵向量 166
13.2.7 轮廓检测 167
13.2.8 过滤干扰项 167
13.2.9 得到轮廓 168
13.2.10 轮廓坐标点排序 169
13.2.11 获得图像透视变换矩阵 170
13.2.12 图像透视变换 172
13.2.13 显示结果图像 173
13.2.14 代码演示 173
OpenCV 技术篇
第14章 OpenCV 与机器学习 178
14.1 传统机器学习 178
14.1.1 逻辑回归 178
14.1.2 K近邻 179
14.1.3 支持向量机(SVM) 179
14.1.4 贝叶斯网络 180
14.2 OpenCV 与深度学习 180
14.2.1 用GoogLeNet模型实现图像分类 181
14.2.2 用SSD模型实现对象检测 181
14.2.3 用FCN模型实现图像分割 182
14.2.4 用CNN模型预测年龄和性别 182
14.2.5 用GOTURN模型实现对象跟踪 182
第15章 基于深度学习的路面病害检测案例 184
15.1 深度学习在路面病害检测中的应用背景 184
15.2 数据集构建 184
15.3 基于DeepLabV3+的路面病害检测方法 187
15.3.1 模型改进 187
15.3.2 评价指标 189
15.3.3 模型训练与测试 190
15.3.4 不同模型的对比实验 191
15.3.5 不同模型检测病害的可视化效果对比 192
参考文献 194
自OpenCV出现以来,它作为信息获取和处理的重要技术,以帮助开发者和研究人员提高产出效率为目标,一直是计算机视觉研究人员的首选工具,逐渐进入大多数工科类本科生和研究生的必修或选修课程。OpenCV使学习计算机视觉变得更加容易,熟悉、应用OpenCV会助力计算机视觉的学习,达到事半功倍的效果。
目前,在机器学习和深度学习越来越热门的背景下,对其应用最广泛的就是图像的处理与分析,并且这些项目大部分是基于OpenCV来进行开发的。OpenCV注重开发实时应用的程序,其中的算法模型和功能API(应用程序接口)都具备实时运行的能力。由于计算机视觉技术的不断发展,OpenCV库也在不断改善,目前已经可以在几乎所有平台上使用,并且由于其函数均由面向对象的C++语言编写,因此OpenCV具有卓越的高效性。不仅如此,OpenCV库还提供了多种程序语言的接口,包括C++、Python、Java等的接口,使用户掌握应用更加方便。对了解、学习计算机视觉领域的技术而言,OpenCV绝对是最优秀的平台之一。
国内相关的介绍OpenCV的图书从基础理论介绍到应用实例都有涉及,多集中在某一细分领域,如工业机器人、视觉测量等。除此之外,由于计算机视觉技术的不断更新,原有的一些模型算法需要进行优化调整或替换。本书以实用案例为中心,分析、解释了函数调用原理,展示了函数应用场景。不同的案例包含了各种不同的使用场景,从传统的图像处理到现代深度学习模块,一步步深化OpenCV图像处理技术。
本书共15章,前3章为基础知识,后12章为OpenCV图像处理的基本操作和综合应用实例。第1~3章为基础知识篇,介绍了C++语言的程序设计和OpenCV的发展历程以及未来发展前景等,着重介绍了OpenCV的安装;第4~7章为OpenCV基础应用篇,介绍了图像的基本操作应用案例,包括图像和视频的读取、保存,以及图像的预处理和绘制;第8~10章为OpenCV进阶篇,介绍了如何获得翘曲图片,以及几何形状检测和人脸检测案例;第11~13章为OpenCV提高篇,介绍了使用VS 2017和VS Code两个平台创建颜色选择器,跟踪、绘制颜色路径和文档扫描的应用案例;第14~15章为OpenCV技术篇,介绍了OpenCV中与机器学习相关的函数与使用方法,同时结合在路面病害检测中的应用,介绍OpenCV中与深度学习相关的内容。本书OpenCV基础应用篇、提高篇以及技术篇的案例基于在Visual Studio 2017平台上使用OpenCV库以及使用C语言进行展示。
本书由宋春华、赵俊、夏晓华编著,由宋春华对全书进行统稿。其中,西华大学宋春华和四川轻化工大学赵俊共同完成了第1~3章、第11~13章;西华大学宋春华完成了第4~10章;长安大学夏晓华完成了第14章和第15章。全书是在各位作者的精心配合和共同努力下完成的。
特别感谢南方科技大学教授、欧洲科学院院士刘国平教授,日本长崎综合科学大学教授、日本工程院院士刘震教授为本书编写提供的宝贵意见。感谢西华大学机械工程学院硕士生王显宇、黄海涛、杨超、李丹丹、戴凌锋、罗杨对本书的校对工作。在本书编写过程中,参考了一些资料,在此向书中所列参考文献的作者表示衷心的感谢!
由于编著者水平有限,不足和疏漏之处在所难免,敬请读者批评指正。
编著者
2023年10月
评论
还没有评论。