描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302597636丛书名: 人工智能技术丛书
近年来,OpenCV在图像分割、物体识别、运动跟踪、人脸识别、目标检测、机器视觉、机器人等领域大显身手。OpenCV内容之丰富,是目前开源视觉算法库中所罕见的。本书基于Python 3.8和OpenCV 4.5,面向初学者,涵盖传统的图像与视频处理方法,内容丰富,行文通俗,适合读者快速入门。
OpenCV是一个跨平台计算机视觉和机器学习软件库,也是计算机视觉领域的开发人员必须掌握的技术。本书基于Python 3.8全面、系统地介绍OpenCV 4.5的使用,并配套示例源代码、开发环境与答疑服务。
本书共分15章,主要内容包括计算机视觉概述、OpenCV的Python开发环境搭建、OpenCV基本作、数组矩阵、图像处理模块、灰度变换和直方图修正、图像平滑、几何变换、图像边缘检测、图像分割、图像金字塔、图像形态学、视频处理,以及停车场车牌识别、物体识别、运动跟踪、人脸检测等案例。
本书既适合计算机视觉与图像处理、人工智能算法的开发人员阅读,也适合高等院校和培训机构计算机视觉与图像处理、人工智能等相关专业的师生教学参考。
第1章 计算机视觉概述 1
1.1 图像的基本概念 1
1.1.1 图像和图形 1
1.1.2 数字图像及其特点 1
1.1.3 图像单位 2
1.1.4 图像分辨率与屏幕分辨率 3
1.1.5 图像的灰度与灰度级 3
1.1.6 图像的深度 4
1.1.7 二值图像、灰度图像与彩色图像 4
1.1.8 通道 5
1.1.9 图像存储 5
1.2 图像噪声 5
1.2.1 图像噪声的定义 5
1.2.2 图像噪声的来源 6
1.2.3 图像噪声的滤除 6
1.3 图像处理 7
1.3.1 图像处理的分类 7
1.3.2 数字图像处理 8
1.3.3 数字图像处理常用方法 9
1.3.4 图像处理的应用 12
1.5 计算机视觉概述 12
1.5.1 基本概念 12
1.5.2 计算机视觉的应用 14
1.5.3 与相关学科的区别 15
1.6 OpenCV概述 15
第2章 OpenCV的Python开发环境搭建 17
2.1 Python 3.8下载与安装 17
2.2 在线安装与卸载opencv-python 18
2.2.1 在线安装opencv-python 18
2.2.2 卸载opencv-python 22
2.3 PyCharm 2021.2下载与安装 23
2.3.1 PyCharm的下载和安装 23
2.3.2 配置PyCharm开发OpenCV程序 24
2.3.3 导入配套源码的方法 27
2.3.4 调试Python程序 27
2.4 测试一下NumPy的数学函数 28
第3章 OpenCV基本操作 29
3.1 OpenCV架构 29
3.2 图像输入输出模块imgcodecs 31
3.2.1 读取图像文件 31
3.2.2 得到读取的图片的高度和宽度 33
3.2.3 imwrite保存图片 34
3.3 OpenCV界面编程 35
3.4 单窗口显示多图片 37
3.5 销毁窗口 39
3.6 鼠标事件 40
3.7 键盘事件 44
3.8 滑动条事件 45
第4章 数组矩阵 47
4.1 NumPy概述 47
4.2 ndarray对象 48
4.3 NumPy的数据类型 49
4.4 数组属性 52
4.5 新建数组 54
4.6 从已有的数组创建数组 55
4.7 从数值范围创建数组 57
4.8 切片和索引 58
4.9 高级索引 60
4.9.1 整数数组索引 60
4.9.2 布尔索引 61
4.9.3 花式索引 61
4.10 迭代数组 62
4.10.1 迭代器对象nditer 62
4.10.2 控制遍历顺序 63
4.10.3 修改数组中元素的值 64
4.10.4 使用外部循环 64
4.10.5 广播迭代 65
4.11 数组操作 66
4.11.1 修改数组形状 66
4.11.2 翻转数组 68
第5章 图像处理模块 72
5.1 颜色变换cvtColor 72
5.2 画基本图形 73
5.2.1 画点 73
5.2.2 画矩形 74
5.2.3 画圆 74
5.2.4 画椭圆 75
5.2.5 画线段 77
5.2.6 画多边形 77
5.2.7 填充多边形 78
5.3 文字绘制 80
5.4 为图像添加边框 82
5.5 在图像中查找轮廓 84
第6章 灰度变换和直方图修正 86
6.1 点运算 86
6.1.1 点运算的基本概念 86
6.1.2 点运算的目标与分类 86
6.1.3 点运算的特点和应用 87
6.2 灰度变换 88
6.2.1 灰度变换的基本概念 88
6.2.2 灰度变换的作用 88
6.2.3 灰度变换的方法 89
6.2.4 灰度化 89
6.2.5 对比度 93
6.2.6 灰度的线性变换 93
6.2.7 分段线性变换 95
6.2.8 对数变换和反对数变换 97
6.2.9 幂律变换 99
6.3 直方图修正 101
6.3.1 直方图的概念 101
6.3.2 直方图均衡化 104
第7章 图像平滑 108
7.1 图像平滑基础 108
7.2 线性滤波 110
7.2.1 归一化方框滤波器 110
7.2.2 高斯滤波器 111
7.3 非线性滤波 116
7.3.1 中值滤波 116
7.3.2 双边滤波 116
第8章 几何变换 118
8.1 几何变换基础 118
8.2 图像平移 121
8.3 图像旋转 122
8.4 仿射变换 125
8.5 图像缩放 127
8.5.1 缩放原理 127
8.5.2 OpenCV中的缩放 128
第9章 图像边缘检测 130
9.1 概述 130
9.2 边缘检测研究的历史现状 133
9.3 边缘定义及类型分析 134
9.4 梯度的概念 135
9.5 图像边缘检测的应用 135
9.6 目前边缘检测存在的问题 137
9.7 边缘检测的基本思想 138
9.8 图像边缘检测的步骤 139
9.9 经典图像边缘检测算法 140
9.9.1 Roberts算子 141
9.9.2 Sobel算子边缘检测 143
9.9.3 Prewitt算子边缘检测 145
9.9.4 LoG边缘检测算子 147
9.9.5 边缘检测的技术与方法 150
第10章 图像分割 153
10.1 图像分割概述 153
10.2 图像分割技术现状 154
10.3 图像分割的应用 155
10.4 图像分割的数学定义 156
10.5 图像分割方法的分类 157
10.5.1 基于阈值化的分割方法 158
10.5.2 基于边缘的分割方法 159
10.5.3 基于区域的分割方法 159
10.5.4 基于神经网络的分割方法 161
10.5.5 基于聚类的分割方法 162
10.6 使用OpenCV进行图像分割 163
10.7 彩色图像分割 168
10.8 grabCut算法分割图像 170
10.8.1 基本概念 170
10.8.2 grabCut函数 171
10.9 floodFill漫水填充分割 176
10.9.1 基本概念 176
10.9.2 floodFill函数 177
10.10 分水岭分割法 179
10.10.1 基本概念 179
10.10.2 wathershed函数 180
第11章 图像金字塔 184
11.1 基本概念 184
11.2 高斯金字塔 185
11.2.1 向下取样 186
11.2.2 向上取样 187
11.3 拉普拉斯金字塔 189
第12章 图像形态学 191
12.1 图像形态学基本概念 191
12.2 形态学的应用 191
12.3 数学上的形态学 192
12.3.1 拓扑学 192
12.3.2 数学形态学的组成与操作分类 193
12.3.3 数学形态学的应用 193
12.4 结构元素 193
12.5 膨胀 194
12.6 腐蚀 195
12.7 开运算 196
12.8 闭运算 197
12.9 实现腐蚀和膨胀 198
12.10 开闭运算和顶帽/黑帽 200
12.11 用形态学运算检测边缘 203
12.12 击中击不中 204
12.13 利用形态学运算提取水平线和垂直线 207
第13章 视频处理 209
13.1 OpenCV视频处理架构 209
13.2 捕获视频类VideoCapture 210
13.2.1 构造VideoCapture对象 210
13.2.2 判断打开视频是否成功 211
13.2.3 读取视频帧 211
13.2.4 播放视频文件 212
13.2.5 获取和设置视频属性 214
13.2.6 播放摄像头视频 216
第14章 停车场车牌识别案例实战 219
14.1 需求分析 219
14.2 技术可行性分析 220
14.2.1 国外技术分析 220
14.2.2 国内技术分析 222
14.2.3 车牌识别技术的难点 223
14.2.4 车牌识别系统概述 223
14.3 车牌定位技术 224
14.3.1 车牌特征概述 224
14.3.2 车牌定位方法 225
14.3.3 车牌图像预处理 229
14.3.4 车牌图像的灰度化 229
14.3.5 车牌图像的直方图均衡化 231
14.3.6 车牌图像的滤波 232
14.3.7 车牌图像的二值化 233
14.3.8 车牌图像的边缘检测 234
14.3.9 车牌图像的灰度映射 234
14.3.10 车牌图像的改进型投影法定位 235
14.4 车牌字符分割技术 236
14.4.1 常用车牌字符分割算法 236
14.4.2 车牌倾斜问题 238
14.4.3 车牌倾斜度检测方法 239
14.4.4 车牌倾斜的校正方法 239
14.4.5 车牌边框和铆钉的去除 239
14.4.6 车牌字符分割 239
14.4.7 基于垂直投影和先验知识的车牌字符分割 240
14.4.8 粘连车牌字符的分割 241
14.4.9 断裂车牌字符的合并 241
14.4.10 对车牌字符的切分结果进行确认 242
14.5 车牌字符识别技术 242
14.5.1 模式识别 243
14.5.2 字符识别 244
14.5.3 汉字识别 254
第15章 OpenCV目标检测 270
15.1 目标检测概述 270
15.2 目标检测的基本概念 272
15.3 视频序列图像预处理 274
15.4 基于深度学习的运动目标检测 275
15.4.1 YOLO运动目标检测算法 276
15.4.2 YOLOv2概述 280
15.4.3 YOLOv3概述 281
15.4.4 实战YOLOv3识别物体 283
15.4.5 SSD运动目标检测算法 292
15.4.6 实战SSD 296
15.4.7 实战人脸检测 298
如今,计算机视觉算法的应用已经渗透到我们生活的方方面面。机器人、无人机、增强现实、虚拟现实、医学影像分析等无一不涉及计算机视觉算法。OpenCV是计算机视觉领域的一个图形与图像算法库,它由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB、C#、Ch、Ruby等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。它轻量级而且高效,在学术界、工业界都得到了广泛的使用。无论是初学者还是资深研究人员,都可以在其中找到得心应手的“武器”,帮助你在研究和应用开发的道路上披荆斩棘。
关于本书
近年来,在图像分割、物体识别、运动跟踪、人脸识别、目标检测、机器视觉、机器人等领域,OpenCV可谓大显身手。OpenCV内容之丰富,是目前开源视觉算法库中罕见的。每年我们都能看到不少关于OpenCV的图书,但是随着OpenCV版本的更迭,部分学习资料已经过时。本书基于Python 3.8和OpenCV 4.5版本编写,面向初学者,涵盖传统的图形图像算法与视频处理方法,并配以示例代码,内容丰富,行文通俗。
本书不仅剖析了大量OpenCV函数的调用细节,还对原理解释得清晰明了,让读者“知其然,并知其所以然”。本书介绍OpenCV 4.5中220多个函数,并给出100多个示例程序,以及车牌识别、物体识别、运动跟踪、人脸检测等案例。在介绍OpenCV 4.5新技术的同时,尽量讲解其背后的原理和公式,为大家以后做专业的图像开发奠定基础。
源码下载、开发环境与答疑服务
本书示例源码、开发环境,请用微信扫描下方的二维码下载,可按扫描出来的页面提示,把链接转发到自己的邮箱中下载。虽然笔者尽了努力编写本书,但书中依然可能存在疏漏,敬请读者提出宝贵意见和建议,作者答疑服务电子邮箱是[email protected],邮件主题写“OpenCV 4.5计算机视觉开发实战”。
本书读者与鸣谢
本书需要有Python编程基础,适合以下读者阅读:
计算机视觉领域的初学者
人工智能图像处理开发人员
高等院校计算机视觉课程的师生
培训机构的师生
本书由朱文伟和李建英创作。在图书出版过程中得到清华大学出版社老师们的支持和帮助,在此表示衷心的感谢。
作 者
2022年1月
评论
还没有评论。