深入理解OpenCV:实用计算机视觉项目解析(原书第3版)
上QQ阅读APP看书,第一时间看更新

前言

本书(现在是第3版)是计算机视觉工程师使用OpenCV作为工具的系列丛书之一。本书保留了最基本的核心数学公式,提供了从构思到运行代码的完整项目,涵盖了当前计算机视觉中的热门话题,包括人脸识别、关键点检测和姿态估计、具有深度卷积网络的车牌识别、从运动中恢复结构、增强现实的场景重建,以及本机和Web环境中的移动端计算机视觉。本书将作者在学术界和行业中实施计算机视觉产品及项目的丰富知识轻松打包,不但向读者介绍了API的功能,而且提供了对完整计算机视觉项目中设计选择的见解,并超越了计算机视觉的基础知识,从更高层次来设计和实现复杂图像识别项目的解决方案。

本书的目标读者

本书主要面向的对象,是希望在C++环境下开始使用OpenCV的计算机视觉新手,鼓励他们从动手开始学习,而不是纠结于传统的基础数学知识。书中提供了有关当前常见的计算机视觉任务的OpenCV API的具体用例示例,同时鼓励“复制–粘贴–运行”这种学习方式并尝试将数学基础保持在最低限度。

如今,计算机视觉工程师可以选择多种工具和软件包,包括OpenCV、dlib、Matlab软件包、SimpleCV、XPCV和scikit-image。在覆盖范围和跨平台方面,没有什么比OpenCV做得更好。但是,对新手而言,OpenCV似乎令人望而生畏,仅在官方模块的API中就有成千上万的函数,这还不包括贡献的模块。尽管OpenCV本身也提供了较广泛的教程,也存在大量的有文档记录的项目,但大都缺乏从头到尾完成项目的教程来满足工程师的需要。

本书内容

本书直接或间接地涵盖了OpenCV的许多功能,包括许多贡献模块。它还展示了如何在Web、iOS和Android设备以及Python Jupyter Notebook中使用OpenCV。每章都针对一个不同的问题,说明如何实现此目标,介绍了解决方案及其理论背景,并提供了一个完整的、可构建的和可运行的代码示例。

本书旨在为读者提供以下内容:

●有效的OpenCV代码示例,用于解决现代的、具有一定复杂度的计算机视觉问题

●OpenCV工程和项目维护的最佳实践

●使用实用的算法设计方法来应对复杂的计算机视觉任务

●熟悉OpenCV最新的API(v4.0.0),并通过实例进行实践

本书涵盖以下章节:

第1章演示如何在台式机和小型嵌入式系统(如Raspberry Pi)上编写图像处理滤波器。

第2章演示如何使用SfM模块将场景重建为稀疏点云(包括相机姿态),以及如何使用多视图立体几何来获得稠密点云。

第3章介绍使用人脸模块进行人脸特征点(也称为人脸标志)检测的过程。

第4章介绍图像分割和特征提取、模式识别基础以及两种重要的模式识别算法:支持向量机(SVM)和深度神经网络(DNN)。

第5章展示用于检测人脸图像的不同技术,从经典的具有Haar功能的级联分类器到采用深度学习的新技术,不一而足。

第6章展示一种使用OpenCV.js(用于JavaScript的OpenCV的编译版本)为Web开发计算机视觉算法的新方法。

第7章展示如何使用OpenCV的ArUco模块、Android的Camera2API和JMonkeyEngine 3D游戏引擎在Android系统中实现增强现实(AR)应用程序。

第8章展示如何使用OpenCV的iOS预编译库在iPhone上构建全景图像拼接程序。

第9章讨论在考虑OpenCV中的算法选择时应遵循的许多方法。

第10章回顾OpenCV的发展历史,以及随着计算机视觉的发展,其框架和算法产品逐步增多的过程。

充分利用本书

本书假定读者有扎实的编程和软件工程技能基础,并能使用C++从头开始构建和运行程序。本书还介绍了JavaScript、Python、Java和Swift的代码。希望深入研究这些部分的工程师若有C++以外的编程语言知识则会更加受益。

本书的读者应该能够以各种方式安装OpenCV。有些章需要安装Python,而有些章则需要安装Android。在随附的代码和文本中将详细讨论如何获取并安装它们。

下载示例代码及彩色图像

本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

下载文件后,请确保使用以下最新版本解压缩文件夹:

●Windows下,推荐使用WinRAR/7-Zip

●Mac下,推荐使用Zipeg/iZip/UnRarX

●Linux下,推荐使用7-Zip/PeaZip

本书的代码也托管在GitHub中,网址为https://github.com/PacktPublishing/Mastering-OpenCV-4-Third-Edition。如果代码有更新,它将在现有的GitHub存储库中进行更新。

可从https://github.com/PacktPublishing/获得更丰富的书籍和视频清单中的其他代码包,去看看吧!

我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。可以在http://www.packtpub.com/sites/default/files/downloads/9781789533576_ColorImages.pdf下载。

本书约定

本书中使用了许多排版约定。

文本代码(Code In Text):表示正文中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、URL、用户输入和twitter链接。下面是一个示例:“要查看SD卡上的剩余空间,请运行df-h head-2。”

代码块设置如下:

当我们希望引起你对代码块特定部分的注意时,相关的行或项目将以粗体显示:

命令行输入或输出的印刷方式如下:

粗体:表示新术语、重要单词或你在屏幕上看到的单词。例如,菜单或对话框中的单词会出现在这样的文本中:“导航到Media|Open Network Stream”。

警告或重要提示信息。

提示或技术信息。