跳转至

零、前言

计算机视觉在现代技术中无处不在。 适用于 Python 的 OpenCV 使我们能够实时运行计算机视觉算法。 随着功能强大的机器的出现,我们获得了更多的处理能力。 使用这项技术,我们可以将计算机视觉应用无缝集成到云中。 Web 开发人员可以开发复杂的应用,而不必重新发明轮子。 本书是一本实用的教程,涵盖了不同级别的各种示例,向您介绍了 OpenCV 的不同功能及其实际实现。

这本书是给谁的

本书适用于刚接触 OpenCV 并希望使用 OpenCV 和 Python 开发计算机视觉应用的 Python 开发人员。 对于想在云上部署计算机视觉应用的通用软件开发人员,这本书也很有用。 熟悉基本数学概念(例如向量和矩阵)将很有帮助。

本书涵盖的内容

第 1 章,“将几何变换应用于图像”解释了如何将几何变换应用于图像。 在本章中,我们将讨论仿射和投影变换,并了解如何使用它们将酷炫的几何效果应用于照片。 本章将从在多个平台(例如 Mac OS X,Linux 和 Windows)上安装 OpenCV-Python 的过程开始。 您还将学习如何以各种方式操作图像,例如调整大小和更改色彩空间。

第 2 章,“检测边缘并应用图像过滤器”展示了如何使用基本的图像处理运算符以及如何使用它们来构建更大的项目。 我们将讨论为什么需要边缘检测以及如何在计算机视觉应用中以各种不同方式使用边缘检测。 我们将讨论图像过滤以及如何将其应用于照片的各种视觉效果。

第 3 章,“卡通化图像”显示了如何使用图像过滤器和其他变换对给定图像进行卡通化。 我们将看到如何使用网络摄像头捕获实时视频流。 我们将讨论如何构建实时应用,在该应用中,我们从流中的每个帧中提取信息并显示结果。

第 4 章,“检测和跟踪不同的身体部位”显示了如何检测和跟踪实时视频流中的面部。 我们将讨论面部检测管道,并了解如何使用它来检测和跟踪面部的不同部分,例如眼睛,耳朵,嘴巴和鼻子。

第 5 章,“从图像中提取特征”与检测图像中的显着点(称为关键点)有关。 我们将讨论为什么这些要点很重要,以及如何使用它们来理解图像的内容。 我们将讨论可用于检测显着点并从图像中提取特征的不同技术。

第 6 章,“接缝雕刻”显示了如何进行内容感知的图像大小调整。 我们将讨论如何检测图像的有趣部分,并了解如何调整给定图像的大小而又不恶化那些有趣的部分。

第 8 章,“检测形状和分割图像”显示了如何进行图像分割。 我们将讨论如何以最佳方式将给定图像划分为其组成部分。 您还将学习如何在图像中将前景与背景分开。

第 8 章,“对象跟踪”向您展示如何跟踪实时视频流中的不同对象。 在本章的最后,您将能够跟踪通过网络摄像头捕获的实时视频流中的任何对象。

第 9 章,“对象识别”显示了如何构建对象识别系统。 我们将讨论如何使用这些知识来构建视觉搜索引擎。

第 10 章,“增强现实”显示了如何构建增强现实应用。 到本章末,您将能够使用网络摄像头构建一个有趣的增强现实项目。

第 11 章,“通过人工神经网络进行机器学习”,展示了如何使用最新的 OpenCV 实现构建高级图像分类器和对象识别。 到本章末,您将能够了解神经网络如何工作以及如何将其应用于机器学习以构建高级图像工具。

充分利用这本书

您需要以下软件:

  • OpenCV 3.1 或更高版本
  • NumPy 1.13 或更高
  • SciPy 1.0 或更高
  • Scikit-learn 0.19 或更高
  • pickleshare 0.7 或更高

硬件规格要求是任何至少具有 8 GB DDR3 RAM 的计算机。

下载示例代码文件

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

您可以按照以下步骤下载代码文件:

  1. 登录或登录 www.packtpub.com
  2. 选择支持选项卡。
  3. 单击代码下载和勘误。
  4. 在搜索框中输入书籍的名称,然后按照屏幕上的说明进行操作。

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

  • Windows 的 WinRAR/7-Zip
  • Mac 的 Zipeg/iZip/UnRarX
  • Linux 的 7-Zip/PeaZip

本书的代码包也托管在 GitHub 上。 我们还从这里提供了丰富的书籍和视频目录中的其他代码包。 去看一下!

下载彩色图像

我们还提供了 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。 您可以在此处下载

使用约定

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

CodeInText:指示文本,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 句柄中的代码字。 这是一个示例:“imwrite()方法会将灰度图像保存为名为output.png的输出文件。”

代码块设置如下:

import cv2
img = cv2.imread('images/input.jpg')
cv2.imwrite('images/output.png', img, [cv2.IMWRITE_PNG_COMPRESSION])

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

import cv2
img = cv2.imread('images/input.jpg')
cv2.imwrite('images/output.png', img, [cv2.IMWRITE_PNG_COMPRESSION])

任何命令行输入或输出的编写方式如下:

$ pip install numpy

粗体:表示新术语,重要单词或您在屏幕上看到的单词。 例如,菜单或对话框中的单词会出现在这样的文本中。 这是一个示例:“RGB:可能是最受欢迎的色彩空间。它代表红色,绿色和蓝色。”

警告或重要提示如下所示。

提示和技巧如下所示。


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组