跳转至

零、前言

OpenCV 是开发者可用的最好的开源计算机视觉库之一。 使用 OpenCV,开发人员可以创建完整的图像处理、对象检测和运动检测项目。 本学习路径面向希望学习如何使用工作代码示例从头开始构建 OpenCV 项目的绝对初学者。 我们将首先介绍计算机视觉及其基本概念,如滤波、直方图、对象分割和对象检测。 随着课程的推进,您将更深入地研究图像处理,探索各种计算机视觉算法,并了解机器学习和深度学习的最新进展如何增强目标检测过程。 随着课程的进展,您将通过构建真实的计算机视觉应用来实践这些知识。

稍后,您将熟悉 OpenCV 的 API 功能,并深入了解完整的计算机视觉项目中的设计选择。 您还将超越计算机视觉的基础知识,实现复杂图像处理项目的解决方案,例如肤色分析、人脸地标和姿势估计、增强现实应用以及车牌识别。 最后,在学习过程接近尾声时,您将了解构建计算机视觉应用时需要避免的某些最佳实践和常见陷阱。

此学习途径包括以下 Packt 产品中的内容:

  • 通过建筑项目学习 OpenCV 4,第二版,作者:David、Millán、Escrivá、Prateek Joshi 和 Vinícius、G.Mendonça
  • 掌握 OpenCV 4,第三版,作者:Roy,Shilkrott,David,Millán Escrivá

这本书是写给谁的?

如果您是一名对计算机视觉和图像处理有基本了解的软件开发人员,并希望使用 OpenCV 开发有趣的计算机视觉应用,那么本课程适合您。 先前的 C++ 知识将帮助您理解本书中涵盖的概念。

这本书涵盖了哪些内容

第 1 章OpenCV 入门,涵盖了在各种操作系统上的安装步骤,并介绍了人类视觉系统以及计算机视觉中的各种主题。

第 2 章OpenCV 基础知识简介讨论了如何在 OpenCV 中读/写图像和视频,并解释了如何使用 CMake 构建项目。

第 3 章,学习图形用户界面和基本过滤,介绍如何构建图形用户界面和鼠标事件检测器来构建交互式应用。

第 4 章,深入研究直方图和过滤器,探索直方图和过滤器,并展示如何将图像动画化。

第 5 章,自动光学检测、对象分割和检测,描述了各种图像预处理技术,如噪声去除、阈值和轮廓分析。

第 6 章,学习对象分类,讨论对象识别和机器学习,以及如何使用支持向量机来构建对象分类系统。

第 7 章,检测人脸部位和覆盖面具,讨论了人脸检测和 Haar Cascade,然后解释了如何使用这些方法来检测人脸的各个部位。

第 8 章,视频监控、背景建模和形态运算,探讨了背景减法、视频监控和形态图像处理,并描述了它们如何相互连接。

第 9 章,学习对象跟踪,介绍如何使用基于颜色和基于特征的跟踪等不同技术跟踪实况视频中的对象。

第 10 章,开发用于文本识别的分割算法,介绍了光学字符识别、文本分割,并介绍了 Tesseract OCR 引擎。

第 11 章,使用 Tesseract 进行文本识别,深入研究了 Tesseract OCR 引擎,解释了如何将其用于文本检测、提取和识别。

第 12 章,深度学习与 OpenCV,探讨了如何使用两种常用的深度学习架构在 OpenCV 中应用深度学习:用于目标检测的 YOLO v3 和用于人脸检测的单镜头检测器。

第 13 章,RaspberryPI 上的 Cartoonizer 和肤色分析,演示了如何为台式机和小型嵌入式系统(如 Raspberry PI)编写一些图像处理过滤器。

第 14 章,使用 SfM 模块探索运动中的结构,演示了如何使用 SfM 模块将场景重建为稀疏的点云(包括相机姿势),并使用多视图立体效果获得密集的点云。

第 15 章,脸部标志和脸部模块姿势,解释了使用脸部模块检测脸部地标(也称为脸部标记)的过程。

第 16 章,基于深卷积网络的车牌识别,介绍了图像分割与特征提取、模式识别基础知识,以及两种重要的模式识别算法--支持向量机(SVM)和深度神经网络(DNN)。

第 17 章,DNN 模块的人脸检测和识别,展示了在图像上检测人脸的不同技术,从使用具有 Haar 特征的级联分类器的更经典算法到使用深度学习的较新技术。

第 18 章,Android 摄像头校准和 AR 使用 ArUco 模块,展示了如何使用 OpenCV 的 ArUco 模块、Android 的 Camera2API 和 JMonkeyEngine 3D 游戏 引擎在 Android 生态系统中实现增强现实(AR)应用。

第 19 章,iOS 全景拼接模块,展示了如何使用 OpenCV 的 iOS 预编译库在 iPhone 上构建全景图像拼接应用。

第 20 章,查找作业的最佳 OpenCV 算法,讨论了在考虑 OpenCV 中的选项时应遵循的一些方法。

第 21 章,避免 OpenCV 中的常见陷阱,回顾了 OpenCV 的历史发展,以及随着计算机视觉的发展,OpenCV 的框架和算法提供的逐渐增加。

为了最大限度地利用这本书

要开始使用本课程,您需要在本地桌面上安装以下软件:

  • OpenCV 4.0
  • CMake 3.3.x 或更高版本
  • Tesseract,Leptonica(Tesseract 的属地)
  • Qt(可选)和 OpenGL(可选)
  • 有些章节需要安装 Python,其他章节需要安装 Android

下载示例代码文件

您可以从您的帐户www.Packt.com下载本书的示例代码文件。 如果您在其他地方购买了本书,您可以访问www.Packt.com/support并注册,让文件直接通过电子邮件发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册www.Packt.com
  2. 选择支持选项卡。
  3. 单击 Code Downloads&Errata(代码下载和勘误表)。
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

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

  • WinRar/7-用于 Windows 的 Zip
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • Linux 版 7-Zip/PeaZip

这本书的代码包也托管在 giHub 上,地址是:https://github.com/PacktPublishing/Building-Computer-Vision-Projects-with-OpenCV4-and-CPlusPlus。如果代码有更新,它将在现有的 giHub 存储库中进行更新。

我们还有来自我们丰富的图书和视频目录的其他代码包,请访问https://github.com/PacktPublishing/。 看看他们!

使用的约定

本书中使用了许多文本约定。

CodeInText:指示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。 下面是一个示例:“input()方法用于从用户获取输入。”

代码块设置如下:

Mat bigImg;
resize(smallImg, bigImg, size, 0,0, INTER_LINEAR);
dst.setTo(0);
bigImg.copyTo(dst, mask);

任何命令行输入或输出都如下所示:

sudo apt-get purge -y wolfram-engine

粗体:表示您在屏幕上看到的新术语、重要单词或单词。 例如,菜单或对话框中的单词显示在文本中,如下所示。 下面是一个示例:“如果您需要不同的内容,请单击标题中的Downloads链接,查看所有可能的下载内容:”

Warnings or important notes appear like this. Tips and tricks appear like this.

保持联系

欢迎读者的反馈。

一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中提及书名,然后给我们发电子邮件至customercare@packtpub.com

勘误表:虽然我们已经竭尽全力确保内容的准确性,但错误还是会发生。 如果您在这本书中发现了错误,请向我们报告,我们将不胜感激。 请访问www.Packt.com/Submit-errata,选择您的图书,单击勘误表提交表链接,然后输入详细信息。

盗版:如果您在互联网上遇到任何形式的非法复制我们的作品,请您提供地址或网站名称,我们将不胜感激。 请拨打copyright@packt.com与我们联系,并提供该材料的链接。

如果您有兴趣成为一名作者:如果有一个您擅长的主题,并且您有兴趣撰写或投稿一本书,请访问Auths.Packtpub.com

评论

请留下评论。 一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢? 这样,潜在读者就可以看到并使用您不偏不倚的意见来做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者也可以看到您对他们的书的反馈。 谢谢!

有关 Packt 的更多信息,请访问Packt.com


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组