新書推薦:
《
新民说·现实政治史:从马基雅维利到基辛格
》
售價:NT$
454.0
《
宽容是件奢侈品(人生360度·一分钟经典故事)
》
售價:NT$
203.0
《
甲骨拼合六集
》
售價:NT$
1520.0
《
视觉美食家:商业摄影实战与创意解析
》
售價:NT$
602.0
《
中国经济发展的新阶段:机会与选择
》
售價:NT$
454.0
《
DK月季玫瑰百科
》
售價:NT$
959.0
《
为你想要的生活
》
售價:NT$
301.0
《
关键改变:如何实现自我蜕变
》
售價:NT$
352.0
|
編輯推薦: |
计算机视觉是一门发展迅速的科学,涵盖了多种应用和技术。这本书不但适用于计算机视觉的初学者,也适用于计算机视觉相关领域的专家。通过学习本书,你将能够利用OpenCV 4和Python 3构建应用程序,将理论应用于实践。
首先,你将了解OpenCV 4,以及如何基于Python 3在各种平台上安装OpenCV 4。然后,你将学习如何执行读取、写入、操纵,以及显示静态图像、视频和摄像头回传信号等基本操作,还将学习图像处理、视频分析、深度估计和分割,并通过构建GUI应用程序获得实践经验。接下来,你将处理两类常见问题——人脸检测和人脸识别,还将学习物体分类和机器学习的概念,这将使你能够创建和使用物体检测器及分类器,甚至跟踪电影或摄像头回传信号中的物体。稍后,你将学习3D跟踪和增强现实的技能。*后,你将学习人工神经网络和深度神经网络,学习如何开发手写数字识别以及对人的性别和年龄进行分类的应用程序。
学习本书之后,你将拥有完成实际计算机视觉项目所需要的技能。
通过阅读本书,你将能够:
?安装并熟悉OpenCV 4的Python 3绑定。
?理解图像处理和视频分析的基础知识。
?利用深度相
|
內容簡介: |
本书首先介绍OpenCV 4以及如何基于Python 3在各种平台上安装OpenCV 4。接下来,你将学习如何执行读取、写入、操纵,以及显示静态图像、视频和摄像机回馈等基本操作。你还将学习图像处理、视频分析、深度估计和分割,并通过构建一个简单的GUI应用程序获得实践经验。接下来,你将处理两类常见问题:人脸检测和人脸识别。你还将学习物体分类和机器学习的概念,这将使你能够创建和使用物体检测器和分类器,甚至跟踪电影或摄像机回馈中的物体。稍后,你将学习3D跟踪和增强现实。本书末尾,你将学习人工神经网络和深度神经网络,学习如何开发手写数字识别以及对人的性别和年龄分类的应用程序。
|
目錄:
|
译者序
前言
作者简介
审校者简介
第1章 安装OpenCV 1
1.1 技术需求 2
1.2 OpenCV 4有哪些新特性 2
1.3 选择和使用合适的安装工具 3
1.3.1 在Windows上安装 3
1.3.2 在macOS上安装 7
1.3.3 在Debian、Ubuntu、Linux Mint以及类似系统上安装 8
1.3.4 在其他类UNIX系统上安装 11
1.4 运行示例 12
1.5 查找文档、帮助和更新 13
1.6 本章小结 13
第2章 处理文件、摄像头和GUI 14
2.1 技术需求 14
2.2 基本I/O脚本 14
2.2.1 读取/写入图像文件 15
2.2.2 在图像和原始字节之间进行转换 17
2.2.3 基于numpy.array访问图像数据 19
2.2.4 读取/写入视频文件 21
2.2.5 捕捉摄像头帧 22
2.2.6 在窗口中显示图像 23
2.2.7 在窗口中显示摄像头帧 24
2.3 项目Cameo(人脸跟踪和图像处理) 25
2.4 Cameo:面向对象的设计 26
2.4.1 基于managers.CaptureManager提取视频流 26
2.4.2 基于managers.WindowManager提取窗口和键盘 30
2.4.3 基于cameo.Cameo应用所有内容 31
2.5 本章小结 33
第3章 基于OpenCV的图像处理 34
3.1 技术需求 34
3.2 在不同颜色模型之间进行图像转换 34
3.3 探索傅里叶变换 35
3.4 创建模块 38
3.5 边缘检测 38
3.6 自定义核:获取卷积 39
3.7 修改应用程序 41
3.8 基于Canny的边缘检测 43
3.9 轮廓检测 43
3.9.1 边框、小矩形区域以及小外接圆 44
3.9.2 凸轮廓和Douglas-Peucker算法 46
3.10 检测线、圆以及其他形状 48
3.10.1 检测线 48
3.10.2 检测圆 49
3.10.3 检测其他形状 50
3.11 本章小结 50
第4章 深度估计和分割 51
4.1 技术需求 51
4.2 创建模块 52
4.3 从深度摄像头捕捉帧 52
4.4 将10位图像转换成8位图像 54
4.5 由视差图创建掩模 56
4.6 修改应用程序 57
4.7 基于普通摄像头的深度估计 59
4.8 基于GrabCut算法的前景检测 64
4.9 基于分水岭算法的图像分割 67
4.10 本章小结 69
第5章 人脸检测和识别 70
5.1 技术需求 71
5.2 Haar级联的概念化 71
5.3 获取Haar级联数据 72
5.4 使用OpenCV进行人脸检测 72
5.4.1 在静态图像上进行人脸检测 73
5.4.2 在视频上进行人脸检测 74
5.4.3 进行人脸识别 77
5.5 在红外线下换脸 83
5.5.1 修改应用程序的循环 84
5.5.2 掩模复制操作 86
5.6 本章小结 88
第6章 使用图像描述符检索和搜索图像 89
6.1 技术需求 89
6.2 理解特征检测和匹配的类型 90
6.3 检测Harris角点 90
6.4 检测DoG特征并提取SIFT描述符 92
6.5 检测快速Hessian特征并提取SURF描述符 95
6.6 使用基于FAST特征和BRIEF描述符的ORB 96
6.6.1 FAST 97
6.6.2 BRIEF 97
6.6.3 蛮力匹配 98
6.6.4 匹配两幅图像中的标识 98
6.7 使用K近邻和比率检验过滤匹配 101
6.8 基于FLANN的匹配 104
6.9 基于FLANN进行单应性匹配 107
6.10 示例应用程序:文身取证 110
6.10.1 将图像描述符保存到文件 110
6.10.2 扫描匹配 111
6.11 本章小结 114
第7章 建立自定义物体检测器 115
7.1 技术需求 115
7.2 理解HOG描述符 116
7.2.1 HOG的可视化 116
7.2.2 使用HOG描述图像的区域 117
7.3 理解非极大值抑制 118
7.4 理解支持向量机 118
7.5 基于HOG描述符检测人 119
7.6 创建并训练物体检测器 122
7.6.1 理解BoW 122
7.6.2 将BoW应用于计算机视觉领域 123
7.6.3 k均值聚类 123
7.7 检测汽车 124
7.7.1 支持向量机和滑动窗口相结合 129
7.7.2 检测场景中的汽车 130
7.7.3 保存并加载经过训练的支持向量机 135
7.8 本章小结 135
第8章 物体跟踪 136
8.1 技术需求 136
8.2 基于背景差分检测运动物体 137
8.2.1 实现基本背景差分器 138
8.2.2 使用MOG背景差分器 140
8.2.3 使用KNN背景差分器 143
8.2.4 使用GMG和其他背景差分器 145
8.3 利用MeanShift和CamShift跟踪彩色物体 147
8.3.1 规划MeanShift示例 148
8.3.2 计算和反投影颜色直方图 148
8.3.3 实现MeanShift示例 152
8.3.4 使用CamShift 153
8.4 使用卡尔曼滤波器寻找运动趋势 155
8.4.1 理解预测和更新阶段 155
8.4.2 跟踪鼠标光标 156
8.5 跟踪行人 158
8.5.1 规划应用程序的流程 158
8.5.2 比较面向对象范式和函数范式 159
8.5.3 实现行人类 160
8.5.4 实现主函数 162
8.5.5 考虑接下来的步骤 165
8.6 本章小结 165
第9章 摄像头模型和增强现实 166
9.1 技术需求 166
9.2 理解3D图像跟踪和增强现实 167
9.2.1 理解摄像头和镜头参数 168
9.2.2 理解cv2.solvePnPRansac 172
9.3 实现demo应用程序 174
9.3.1 导入模块 174
9.3.2 执行灰度转换 175
9.3.3 执行2D到3D的空间转换 176
9.3.4 实现应用程序类 177
9.3.5 运行和测试应用程序 192
9.4 改进3D跟踪算法 195
9.5 本章小结 195
第10章 基于OpenCV的神经网络导论 197
10.1 技术需求 198
10.2 理解人工神经网络 198
10.2.1 理解神经元和感知器 199
10.2.2 理解神经网络的层 200
10.3 用OpenCV训练基本人工神经网络 202
10.4 训练多阶段人工神经网络分类器 203
10.5 基于人工神经网络识别手写数字 207
10.5.1 理解手写数字的MNIST数据库 207
10.5.2 为MNIST数据库选择训练参数 208
10.5.3 实现模块来训练人工神经网络 208
10.5.4 实现简单测试模块 212
10.5.5 实现主模块 212
10.5.6 试着提升人工神经网络训练性能 217
10.5.7 寻找其他潜在应用程序 218
10.6 在OpenCV中使用其他框架的深度神经网络 219
10.7 基于第三方深度神经网络的物体检测和分类 220
10.8 基于第三方深度神经网络的人脸检测和分类 223
10.9 本章小结 228
附录 基于曲线滤波器弯曲颜色空间 229
|
內容試閱:
|
本书内容是关于OpenCV的 Python 绑定的。从经典技术到先进技术,从几何知识到机器学习,读者将学习大量的技术和算法。在构建良好应用程序的过程中,这些内容都有助于解决实际的计算机视觉问题。在使用OpenCV 4和Python 3的过程中,我们所采用的方法既适用于计算机视觉新手,又适用于希望扩展和更新技能的专家。
首先,我们将介绍OpenCV 4,并解释如何基于Python 3在各种平台上安装、设置OpenCV 4。接着将介绍如何执行读取、写入、操纵和显示静态图像、视频以及摄像头回传信号等基本操作。还将介绍图像处理和视频分析,以及深度估计和分割,通过构建简单的GUI应用程序,让读者获得实践技能。接下来,将处理两类主流问题:人脸检测和人脸识别。
随着学习的深入,我们将探索物体分类和机器学习的概念,使读者能够创建和使用物体检测器及分类器,甚至跟踪电影或者摄像头回传信号中的物体。随后我们将工作扩展到3D跟踪和增强现实。后,在开发识别手写数字的应用程序并对人的性别和年龄进行分类时,我们将学习人工神经网络(Artificial Neural Network,ANN)和深度神经网络(Deep Neural Network,DNN)。
读完本书,你将获得正确的知识和技能,以着手实际的计算机视觉项目。
目标读者
本书是为那些对计算机视觉、机器学习以及OpenCV在真实场景中的应用感兴趣的读者编写的,无论是计算机视觉新手,还是那些希望跟进OpenCV 4和Python 3的专家,都非常适合阅读本书。读者应该熟悉基本的Python编程知识,但是不需要具备图像处理、计算机视觉或机器学习的先验知识。
本书内容
第1章解释如何基于Python 3在各种平台上安装OpenCV 4。本章还提供了常见问题的处理步骤。
第2章介绍OpenCV的I/O功能。本章还讨论了GUI项目的面向对象设计,我们将在其他章节中对该GUI项目进一步开发。
第3章介绍一些转换图像所需的技术,如颜色处理、图像锐化、物体轮廓标记以及几何形状检测。
第4章展示如何使用来自深度摄像头的数据识别前景和背景区域,以将效果限制在前景或背景。
第5章介绍基于OpenCV的一些人脸检测和识别功能,以及定义特定类型的可检测物体的数据文件。
第6章展示如何在OpenCV的帮助下描述图像的特征,以及如何利用特征进行图像匹配和搜索。
第7章结合计算机视觉和机器学习算法来定位和分类图像中的物体。本章还展示了如何使用OpenCV实现这种算法组合。
第8章演示跟踪和预测视频或实时摄像头中人和物体运动的方法。
第9章将构建一个增强现实应用程序,使用摄像头、物体和运动的信息,实时地将3D图形叠加到跟踪的物体上。
第10章介绍OpenCV中的人工神经网络和深度神经网络,并说明这些内容在实际应用中的用法。
附录描述颜色曲线的概念以及利用SciPy对其进行的实现。
配置
读者至少要熟练掌握Python编程语言的基本知识。推荐使用Windows、macOS或Linux开发机。你可以参考第1章中关于安装OpenCV 4、Python 3以及其他依赖项的说明。
本书采用实践教学方法,包括77个示例脚本以及示例数据。阅读本书的时候,这些示例将有助于强化概念。
本书的代码是在BSD 3条款开放源码许可下发布的,这与OpenCV本身所使用的许可相同。鼓励读者使用、修改、改进示例程序,甚至发布对这些示例程序的更改。
下载示例代码及彩色图像
本书的示例代码文件及截图、样图和视频文件,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的代码包也托管在GitHub的https://github.com/PackPublishing/Learning-opencv-4-Computer-Vision-with-Python-Third-Edition处。如果代码有更新,其上代码也会随之更新。
本书约定
文本中的代码体:指示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、用户输入和Twitter句柄。例如“OpenCV提供了VideoCapture和VideoWriter类,它们支持各种视频文件格式”。
代码块示例:
代码块中需关注的部分加粗表示:
通常,命令行输入或输出这样表示:
对于Windows系统,命令行输入或输出这样表示:
表示警告或重要注意点。
表示提示和技巧。
|
|