描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111737209丛书名: 智能系统与技术丛书
(1)工业界和学术界专家联袂推荐,一线开发专家与金牌讲师撰写,一站式解决OpenCV工程化开发痛点。(2)以工业级视觉应用开发所需知识点为主线,讲透OpenCV相关核心模块,案例化详解1000个常用函数以及模型的推理与加速,打通OpenCV视觉开发完整路径。
本书专注于介绍OpenCV4在工业领域的常用模块,通过合理的章节设置构建了阶梯式的知识点学习路径。化繁就简、案例驱动,注重算法原理、代码演示及在相关场景的实际使用。本书还介绍了深度学习知识与开发技巧,拓展OpenCV开发者技能。全书共16章,分为3篇。
● 基础篇(第1~4章):主要介绍OpenCV的简单使用、像素操作、色彩空间、图像直方图。 特色:从如何配置OpenCV开发环境开始到完成第一个OpenCV代码演示,从图像的表示到基本的像素操作,方便读者全面扎实地掌握基本图像处理知识与函数使用技巧,为深入学习打下坚实基础。
● 进阶篇(第5~12章):主要介绍卷积操作、二值图像分析、形态学分析、特征提取、视频分析、机器学习、DNN。 特色:结合代码演示学习OpenCV框架中主要图像处理模块的算法原理与相关函数使用,通过多个案例打通知识节点,学会使用OpenCV传统算法解决实际问题。
● 高级与实战篇(第13~16章):主要介绍YOLO 5自定义对象检测、缺陷检测、OpenVINO加速与CUDA加速。
特色:面向工程应用,帮助OpenCV开发者提升技能,通过实战案例增强OpenCV应用能力,掌握视觉开发必*的深度学习知识,以及从模型训练到部署加速的技巧。
目 录
前言
基础篇
第1章 OpenCV简介与安装 / 2
1.1 OpenCV简介 / 2
1.1.1 OpenCV历史 / 2
1.1.2 OpenCV的模块与功能 / 3
1.1.3 OpenCV4里程碑 / 4
1.1.4 OpenCV发展现状与
应用趋势 / 4
1.2 OpenCV源码项目 / 4
1.3 OpenCV4开发环境搭建 / 5
1.4 第一个OpenCV开发程序 / 6
1.5 图像加载与保存 / 7
1.5.1 加载图像 / 7
1.5.2 保存图像 / 8
1.6 加载视频 / 9
1.7 小结 / 12
第2章 Mat与像素操作 / 13
2.1 Mat对象 / 13
2.1.1 什么是Mat对象 / 13
2.1.2 一切图像皆Mat / 14
2.1.3 Mat类型与深度 / 15
2.1.4 创建Mat / 15
2.2 访问像素 / 18
2.2.1 遍历Mat中的像素 / 18
2.2.2 像素算术运算 / 20
2.2.3 位运算 / 21
2.2.4 调整图像亮度与对比度 / 22
2.3 图像类型与通道 / 23
2.3.1 图像类型 / 23
2.3.2 图像通道 / 23
2.3.3 通道操作 / 24
2.4 小结 / 25
第3章 色彩空间 / 26
3.1 RGB色彩空间 / 26
3.2 HSV色彩空间 / 28
3.3 LAB色彩空间 / 29
3.4 色彩空间的转换与应用 / 30
3.5 小结 / 31
第4章 图像直方图 / 32
4.1 像素统计信息 / 32
4.2 直方图的计算与绘制 / 34
4.2.1 直方图计算 / 35
4.2.2 直方图绘制 / 36
4.3 直方图均衡化 / 37
4.4 直方图比较 / 40
4.5 直方图反向投影 / 41
4.6 小结 / 43
进阶篇
第5章 卷积操作 / 46
5.1 卷积的概念 / 46
5.2 卷积模糊 / 49
5.3 自定义滤波 / 53
5.4 梯度提取 / 56
5.5 边缘发现 / 59
5.6 噪声与去噪 / 61
5.7 边缘保留滤波 / 64
5.8 锐化增强 / 66
5.9 小结 / 68
第6章 二值图像 / 70
6.1 图像阈值化分割 / 70
6.2 全局阈值计算 / 72
6.3 自适应阈值计算 / 76
6.4 去噪与二值化 / 77
6.4.1 去噪对二值化的影响 / 77
6.4.2 其他方式的二值化 / 78
6.5 小结 / 79
第7章 二值分析 / 80
7.1 二值图像分析概述 / 80
7.2 连通组件标记 / 82
7.3 轮廓发现 / 85
7.3.1 轮廓发现函数 / 85
7.3.2 轮廓绘制函数 / 87
7.3.3 轮廓发现与绘制的示例
代码 / 87
7.4 轮廓测量 / 88
7.5 拟合与逼近 / 90
7.6 轮廓分析 / 95
7.7 直线检测 / 97
7.8 霍夫圆检测 / 99
7.9 最大内接圆与最小外接圆 / 101
7.10 轮廓匹配 / 102
7.11 最大轮廓与关键点编码 / 104
7.12 凸包检测 / 106
7.13 小结 / 107
第8章 形态学分析 / 108
8.1 图像形态学概述 / 108
8.2 膨胀与腐蚀 / 109
8.3 开/闭操作 / 111
8.4 形态学梯度 / 113
8.5 顶帽与黑帽 / 115
8.6 击中/击不中 / 116
8.7 结构元素 / 119
8.8 距离变换 / 120
8.9 分水岭分割 / 121
8.10 小结 / 124
第9章 特征提取 / 125
9.1 图像金字塔 / 125
9.1.1 高斯金字塔 / 125
9.1.2 拉普拉斯金字塔 / 128
9.1.3 图像金字塔融合 / 129
9.2 Harris角点检测 / 131
9.3 shi-tomas角点检测 / 133
9.4 亚像素级别的角点检测 / 135
9.5 HOG特征与使用 / 137
9.5.1 HOG特征描述子 / 137
9.5.2 HOG特征行人检测 / 139
9.6 ORB特征描述子 / 140
9.6.1 关键点与描述子提取 / 140
9.6.2 描述子匹配 / 144
9.7 基于特征的对象检测 / 148
9.7.1 单应性矩阵计算方法 / 148
9.7.2 特征对象的位置发现 / 150
9.8 小结 / 152
第10章 视频分析 / 153
10.1 基于颜色的对象跟踪 / 153
10.2 视频背景分析 / 155
10.3 帧差法背景分析 / 157
10.4 稀疏光流分析法 / 158
10.5 稠密光流分析法 / 161
10.6 均值迁移分析 / 163
10.7 小结 / 166
第11章 机器学习 / 167
11.1 KMeans分类 / 167
11.1.1 KMeans图像语义
分割 / 167
11.1.2 提取主色彩构建色卡 / 170
11.2 KNN分类 / 172
11.2.1 KNN函数支持 / 172
11.2.2 KNN实现手写数字
识别 / 173
11.3 SVM分类 / 175
11.3.1 SVM的原理与分类 / 175
11.3.2 SVM函数 / 176
11.3.3 SVM实现手写数字
识别 / 176
11.4 SVM与HOG实现对象检测 / 177
11.4.1 数据样本特征提取 / 178
11.4.2 SVM特征分类 / 179
11.4.3 构建SVM对象检测器 / 179
11.5 小结 / 181
第12章 深度神经网络 / 182
12.1 DNN概述 / 182
12.2 图像分类 / 183
12.3 对象检测 / 186
12.3.1 SSD对象检测 / 187
12.3.2 Faster-RCNN对象
检测 / 188
12.3.3 YOLO对象检测 / 190
12.4 ENet图像语义分割 / 193
12.5 风格迁移 / 195
12.6 场景文字检测 / 197
12.7 人脸检测 / 199
12.8 小结 / 201
高级与实战篇
第13章 YOLO 5自定义对象
检测 / 204
13.1 YOLO 5对象检测框架 / 204
13.2 YOLO 5对象检测 / 205
13.3 自定义对象检测 / 208
13.3.1 数据集制作与生成 / 209
13.3.2 模型训练与查看损失
曲线 / 210
13.3.3 模型导出与部署 / 211
13.4 小结 / 212
第14章 缺陷检测 / 213
14.1 简单背景下的缺陷检测 / 213
14.2 复杂背景下的缺陷检测 / 216
14.2.1 频域增强的缺陷检测 / 216
14.2.2 空间域增强的缺陷检测 / 219
14.3 案例:刀片缺陷检测 / 220
14.4 基于深度学习的缺陷检测 / 222
14.4.1 基于分类的缺陷检测 / 223
14.4.2 基于分割的缺陷检测 / 226
14.5 小结 / 228
第15章 OpenVINO加速 / 229
15.1 OpenVINO框架安装与环境
配置 / 229
15.1.1 OpenVINO安装 / 230
15.1.2 配置C 开发支持 / 232
15.2 OpenVINO2022.x版SDK
推理演示 / 233
15.2.1 推理SDK介绍 / 234
15.2.2 推理SDK演示 / 235
15.3 OpenVINO支持UNet部署 / 236
15.4 OpenVINO支持YOLO 5
部署 / 237
15.5 小结 / 239
第16章 CUDA加速 / 240
16.1 编译OpenCV源码支持CUDA
加速 / 240
16.2 用CUDA加速传统图像处理 / 245
16.2.1 Mat与GpuMat / 245
16.2.2 加速图像处理与视频
分析 / 246
16.3 加速DNN / 248
16.4 小结 / 249
前 言
为什么要写这本书
当前,人工智能热潮席卷学术界与工业界,人工智能已经成为时下热门的词汇。人工智能领域有两个最引人注目的技术—计算机视觉(CV)与自然语言处理(NLP)。其中,计算机视觉应用范围广泛,应用场景众多,市场迫切需要不同层次的计算机视觉专业人才。
作为当下主流的计算机视觉开发工具与平台之一,OpenCV从测试版本发布至今已有20余年,得到业界知名公司与广大开发者的认可。当前OpenCV已经集成了2000多个计算机视觉相关算法,支持深度学习模型的部署、推理。
我对图像处理的兴趣始于大学做毕业设计时。工作了一段时间之后,一个偶然的机会让我重拾对图像处理的兴趣。于是从2011年开始,我把大量的业余时间都投入到该技术领域,并且接触到了OpenCV开发框架。使用OpenCV框架帮助我节省了很多时间,加快了项目交付速度。后来我在博客与个人微信公众号“OpenCV学堂”上发表了大量OpenCV开发相关的文章,得到了很多读者的反馈、支持与鼓励。通过撰写这些文章,我对如何更好地使用OpenCV进行实际项目开发有了更多思考,也对技术背后的知识有了更深理解与认知。
OpenCV4发布于2018年,现已成为OpenCV框架的主流版本之一。相比之前的版本,OpenCV4的大量函数接口都符合并支持C 11标准,学习起来就像学习其他面向对象编程语言一样容易。此外,OpenCV4支持多种加速机制,可以实时加速传统算法及深度学习模型。OpenCV4在性能、稳定性、易用性上完全超越了之前的各个版本。
国内已经出版了很多OpenCV的书籍,但是我觉得还没有一本书能够完整涵盖OpenCV4开发的技术路径。所以,我认为我有责任把自己多年的OpenCV项目开发经验通过本书毫无保留地呈现给广大读者。希望这本书能帮助初学者掌握基于OpenCV框架进行开发的技术,进而投身到人工智能的技术浪潮中去。
读者对象
本书适合以下读者阅读:
计算机视觉领域的从业者。
OpenCV的爱好者。
高等院校相关专业的师生。
C /Python开发者。
如何阅读本书
本书共16章,分为3篇,由浅入深地讲解OpenCV的技术及应用。
基础篇(第1~4章)主要介绍了OpenCV4框架中基础模块相关的图像知识、函数及应用。
进阶篇(第5~12章)深入介绍了OpenCV4核心模块的功能与应用场景,主要包括图像卷积、二值分析、形态学分析、特征提取、视频分析、机器学习模块等,其中穿插大量实践案例。
高级与实战篇(第13~16章)全面介绍了OpenCV4支持的各种性能加速技术与深度学习模型推理技术,从项目实现出发,讲解了对象检测、缺陷检测、深度学习模型加速等高级应用层面的OpenCV开发技术。
其中,第14章的大部分内容由我的好友与合作者张振撰写。特别感谢他在我需要帮助时,给予我大力支持并提供高质量图书内容。
如果你是一个初学者,我建议你从第1章开始依序阅读本书;如果你已经接触过OpenCV,已有一定的基础,可以从进阶篇开始阅读;如果你使用过OpenCV并有一定的开发经验,可以根据需要进行阅读。
源码是本书内容的一部分,希望读者在阅读本书的同时,通过代码实践加深对书中内容的理解与认知,正所谓“纸上得来终觉浅,绝知此事要躬行”。
勘误和支持
由于我的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。我已经把本书配套源码上传到码云上,访问地址为https://gitee.com/opencv_ai/book-opencv4-
practice。如果有读者想直接提交勘误之后的代码,请先通过我的邮箱[email protected]联系我,经同意后即可提交。同时,我也会根据读者反馈修改、更新源码,所以建议读者在阅读本书之前先从码云上获取最新的配套源码。
如果读者有更多的宝贵意见,也欢迎发送邮件给我,期待读者的真挚反馈。
致谢
感谢“OpenCV学堂”微信公众号上一直支持我的各位读者朋友,感谢你们直言不讳地指出了我文章中的很多不妥之处与需要改进的地方,感谢你们的宝贵建议。感谢OpenVINO中文社区的堵葛亮为第15章提供技术支持与建议。
谨以此书献给众多热爱OpenCV的朋友们,希望你们未来可以创造更大的社会价值。
贾志刚
评论
还没有评论。