零、前言
计算机视觉和图像处理已从利基研究领域扩展到日常使用。 但是,尽管进行了这一革命,但计算机视觉开发和应用开发面临的主要挑战之一是缺少精心设计的指南,该指南教您如何逐步工作。 本书解决了这一关键挑战。
我们将从 Raspberry Pi 和 Python 的基础知识开始,并使用各种支持库(例如 NumPy,SciPy 和 Matplotlib)探索 Python 3 编程。 接下来,我们将了解 Raspberry Pi 上通用输入输出(GPIO)引脚的基础,并了解如何使用 Python 3 编程。 本书全文中介绍了使用 Python 和 GPIO 进行 Raspberry Pi 和计算机视觉编程。
然后,我们将继续在 Raspberry Pi 上安装 OpenCV。 我们将研究 OpenCV 编程的基础知识,并探索高级图像处理和计算机视觉的概念。 我们将学习并演示诸如阈值化,分割,图像量化,图像恢复,数学形态学和轮廓等概念。 然后,我们将使用 OpenCV,Python 和 GPIO 实现一些实际应用。
我们还将学习如何使用另一个库 Mahotas 和 Jupyter 笔记本。 此外,我们将学习如何在 Windows 计算机上安装我们将讨论的所有库。 最后,“附录”部分包含了与 Raspberry Pi 有关的一系列有用主题,这些其他主题没有包含在其他章节中。
这本书适合谁
本书适用于希望在低成本平台上实现计算机视觉应用的 Python 3 开发人员,计算机视觉专业人员和 Raspberry Pi 爱好者。 编程,数学和电子学的基础知识将是有益的。 但是,即使是该领域的初学者,也可以轻松地覆盖本书的内容,因为它们是逐步介绍的。
这本书涵盖的内容
第 1 章“计算机视觉和 Raspberry Pi 的简介”阐述了单板计算机,OpenCV 和 Raspberry Pi 的概念。 我们还将学习如何在 Raspberry Pi 上设置 Raspbian OS。
第 2 章“为计算机视觉准备 Raspberry Pi”教我们如何设置 Raspberry Pi 以演示计算机视觉。
第 3 章“Python 编程简介”,向我们介绍了 Python 3 编程。 我们将学习诸如 NumPy 和 Matplotlib 之类的库。 我们还将详细演示一些带有 LED 和按钮的程序的使用。
第 4 章“计算机视觉入门”,着重介绍计算机视觉编程的基础知识以及将各种相机模块与 Raspberry Pi 连接。 在本章中,我们还将详细学习如何使用图像和 GUI。
第 5 章“图像处理基础知识”,着眼于图像的基本运算,例如按位算术和按位逻辑运算。
第 6 章“色彩空间”,变换和阈值*是我们分析基本分割和阈值化概念的地方。 我们将学习各种几何和透视变换。 我们还将详细了解色彩空间及其应用。
第 7 章“让我们制造一些噪音”,探讨过滤器的概念以及如何使用低通过滤器降低图像中的噪点。 我们将详细了解诸如核和卷积之类的概念。
第 8 章“高通过滤器和特征检测”涉及使用以下方法来检测各种特征,例如线,圆,边和角。 高通滤波技术。
第 9 章“图像恢复,分割和深度图”,研究了还原退化和损坏的图像,并使用 Python 的 K 均值和均值漂移算法实现进行了分割,并估计深度图。
第 10 章“直方图,轮廓和形态变换”,使用直方图分析图像,我们将学习如何通过均衡直方图来增强图像。 我们还将更深入地研究轮廓和数学形态学操作。
第 11 章“计算机视觉的实时应用”,它演示了 OpenCV,Python 3 和 Raspberry Pi 在现实世界中的应用。
第 12 章“与 Mahotas 和 Jupyter 一起工作”,深入研究了另一个名为 Mahotas 的科学图像处理库。 我们还将了解如何使用 Jupyter 笔记本进行 Python 3 编程。
第 13 章“附录”,是与 Python,Raspberry Pi 和计算机视觉相关的各种主题的集合,这些主题与先前的章节不符。
要充分利用这本书
本书所有章节中包含的所有程序都在带有 Raspbian OS 的 Raspberry Pi 上执行。 您将需要 Windows PC 和互联网连接才能在 Raspberry Pi 板上设置 Raspbian OS。 Windows 上的设置说明包含在“附录”部分中。 鼓励您使用 Raspberry Pi 的最新版本(在撰写本文时,它是 Raspberry Pi 4B); 但是,这些程序也可以在 Raspberry Pi 系列的任何一代主板上运行。 这些程序是为 Python 3 解释器编写的,可能无法与 Python 2 一起使用。除了用于设置的 Raspberry Pi 板和 Windows PC 外,您还需要 Raspberry Pi 摄像头模块和 USB 网络摄像头。 此外,需要一些电子组件,例如按钮,LED,面包板和跨接电缆,才能与 Python 3 GPIO 库一起使用。
如果您使用的是本书的数字版本,建议您自己输入代码或通过 GitHub 存储库访问代码(下一节提供链接)。 这样做将帮助您避免任何与复制/粘贴代码有关的潜在错误。
下载示例代码文件
您可以从这个页面的帐户中下载本书的示例代码文件。 如果您在其他地方购买了此书,则可以访问这个页面并注册以将文件直接通过电子邮件发送给您。
您可以按照以下步骤下载代码文件:
- 登录或注册 www.packt.com 。
- 选择支持选项卡。
- 点击代码下载。
- 在搜索框中输入书籍的名称,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用以下最新版本解压缩或解压缩文件夹:
- Windows 的 WinRAR/7-Zip
- Mac 的 Zipeg/iZip/UnRarX
- Linux 的 7-Zip/PeaZip
本书的代码包也托管在 GitHub 上。 如果代码有更新,它将在现有的 GitHub 存储库上进行更新。
我们还从这个页面提供了丰富的书籍和视频目录中的其他代码包。 去看一下!
实现中的代码
可以在这个页面上查看本书的“实现中代码”视频。
下载彩色图像
我们还提供了 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。 您可以在此处下载。
使用的约定
本书中使用了许多文本约定。
文本中的代码:指示文本中的代码字,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 句柄。 这是一个示例:“就像lxterminal
一样,我们也可以从此处运行 Linux 命令。”
代码块设置如下:
p2 = Person()
p2.name = 'Jane'
p2.age = 20
print(p2.name)
print(p2.age)
任何命令行输入或输出的编写方式如下:
sudo apt-get install xrdp -y
粗体:表示新术语,重要单词或您在屏幕上看到的单词。 例如,菜单或对话框中的单词会出现在这样的文本中。 这是一个示例:“在 Windows PC 上打开远程桌面连接应用。”
提示或重要提示
这样出现。