《OpenCV 4计算机视觉:Python语言实现(原书第3版)》首先介绍OpenCV 4以及如何基于Python 3在各种平台上安装OpenCV 4。接下来,你将学习如何执行读取、写入、操纵,以及显示静态图像、视频和摄像机回馈等基本操作。你还将学习图像处理、视频分析、深度估计和分割,并通过构建一个简单的GUI应用程序获得实践经验。接下来,你将处理两类常见问题:人脸检测和人脸识别。你还将学习物体分类和机器学习的概念,这将使你能够创建和使用物体检测器和分类器,甚至跟踪电影或摄像机回馈中的物体。稍后,你将学习3D跟踪和增强现实。本书末尾,你将学习人工神经网络和深度神经网络,学习如何开发手写数字识别以及对人的性别和年龄分类的应用程序。
封面图
目录
- 译者序
- 前言
- 作者简介
- 审校者简介
- 第1章安装OpenCV 1
- 1.1技术需求 2
- 1.2OpenCV 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.4Cameo:面向对象的设计 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.2Haar级联的概念化 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.1FAST 97
- 6.6.2BRIEF 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.1HOG的可视化 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.3k均值聚类 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