本书第3版仍然坚持“帮助计算机视觉工程师迈出掌握OpenCV的第一步”的初心。本书简化数学公式,但保留了重要的数学公式。针对当前热门的计算机视觉主题,如人脸及特征点检测、姿态估计,以及基于深度卷积网络的车牌识别,展示了从构思到运行的全过程,并提供了完整的项目代码。新版本加入“为项目找到最佳OpenCV算法”、“避免OpenCV中的常见陷阱”两个章节帮助程序员从成百上千的API中进行需求权衡、设计、技术选型、优化和避免陷阱。
封面图
目录
- 译者序
- 前言
- 作者简介
- 审阅者简介
- 第1章树莓派上的卡通化和皮肤颜色分析 1
- 1.1访问摄像头 2
- 1.2桌面应用程序的相机处理主循环 4
- 1.2.1生成黑白素描 4
- 1.2.2生成彩色绘画和卡通 6
- 1.2.3用边缘滤波器来生成邪恶模式 8
- 1.2.4用皮肤检测来生成外星人造型 9
- 1.3皮肤变色器的实现 12
- 1.4从桌面移植到嵌入式设备 19
- 1.4.1用于开发嵌入式设备代码的设备配置 21
- 1.4.2在嵌入式设备上安装OpenCV 27
- 1.5小结 39
- 第2章使用SfM模块从运动中恢复结构 40
- 2.1技术要求 40
- 2.2SfM的核心概念 41
- 2.2.1相机标定和对极几何 42
- 2.2.2立体重建和SfM 45
- 2.3在OpenCV中实现SfM 48
- 2.3.1图像特征匹配 48
- 2.3.2找到特征轨迹 52
- 2.3.33D重建和可视化 55
- 2.3.4用于稠密重建的MVS 57
- 2.4小结 60
- 第3章使用人脸模块进行人脸特征点及姿态检测 61
- 3.1技术要求 61
- 3.2背景和理论 63
- 3.2.1主动外观模型与受约束的局部模型 63
- 3.2.2回归方法 64
- 3.3OpenCV中的人脸特征点检测 65
- 3.4基于特征点的人脸方向估计 68
- 3.4.1估计姿态计算 69
- 3.4.2将姿态投影到图像上 70
- 3.5小结 71
- 第4章基于深度卷积网络的车牌识别 72
- 4.1ANPR简介 72
- 4.2ANPR算法 74
- 4.3车牌检测 77
- 4.3.1分割 78
- 4.3.2分类 84
- 4.4车牌识别 87
- 4.4.1OCR分割 88
- 4.4.2基于卷积神经网络的字符分类 89
- 4.5小结 105
- 第5章通过DNN模块进行人脸检测和识别 106
- 5.1介绍人脸检测和人脸识别 106
- 5.1.1人脸检测 108
- 5.1.2人脸预处理 116
- 5.1.3收集人脸并从中学习 127
- 5.1.4人脸识别 138
- 5.1.5收尾工作——保存和加载文件 141
- 5.1.6收尾工作——制作一个漂亮的、交互体验好的GUI 141
- 5.2小结 153
- 5.3参考文献 154
- 第6章Web计算机视觉之初识OpenCV.js 155
- 6.1什么是OpenCV.js 155
- 6.2编译OpenCV.js 157
- 6.3OpenCV.js开发基础 159
- 6.4访问摄像头流 165
- 6.5图像处理和基本用户界面 169
- 6.5.1阈值滤波器 170
- 6.5.2高斯滤波器 170
- 6.5.3canny滤波器 170
- 6.6浏览器中的光流 174
- 6.7在浏览器中使用Haar级联分类器进行人脸检测 178
- 6.8小结 180
- 第7章使用ArUco模块的Android相机校准和AR 182
- 7.1技术要求 182
- 7.2增强现实和姿态估计 183
- 7.2.1相机校准 184
- 7.2.2用于平面重建的增强现实标记 186
- 7.3Android系统中的相机访问 188
- 7.4使用ArUco进行相机校准 191
- 7.5使用jMonkeyEngine实现增强现实 195
- 7.6小结 196
- 第8章带有拼接模块的iOS全景图 198
- 8.1技术要求 198
- 8.2全景图像拼接方法 199
- 8.2.1全景图的特征提取和鲁棒匹配 200
- 8.2.2变形图像,以便全景创建 203
- 8.3项目概况 204
- 8.4用CocoaPods设置iOS OpenCV项目 204
- 8.5用于全景捕捉的iOS UI 205
- 8.6Objective-C++包装器中的OpenCV拼接 209
- 8.7小结 212
- 8.8进一步阅读 212
- 第9章为项目找到最佳OpenCV算法 213
- 9.1技术要求 213
- 9.2方案是否包含在OpenCV中 214
- 9.3OpenCV中的算法选项 215
- 9.4哪种算法最好 217
- 9.5算法性能比较的示例 218
- 9.6小结 223
- 第10章避免OpenCV中的常见陷阱 224
- 10.1OpenCV从v1到v4的历史 224
- 10.2OpenCV中的历史算法 228
- 10.3常见陷阱和建议解决方案 231
- 10.4小结 236
- 10.5进一步阅读 236