本书内容是关于OpenCV的Python绑定的。从经典技术到先进技术,从几何知识到机器学习,读者将学习大量的技术和算法。在构建良好应用程序的过程中,这些内容都有助于解决实际的计算机视觉问题。在使用OpenCV 4和Python 3的过程中,我们所采用的方法既适用于计算机视觉新手,又适用于希望扩展和更新技能的专家。
首先,我们将介绍OpenCV 4,并解释如何基于Python 3在各种平台上安装、设置OpenCV 4。接着将介绍如何执行读取、写入、操纵和显示静态图像、视频以及摄像头回传信号等基本操作。还将介绍图像处理和视频分析,以及深度估计和分割,通过构建简单的GUI应用程序,让读者获得实践技能。接下来,将处理两类主流问题:人脸检测和人脸识别。
随着学习的深入,我们将探索物体分类和机器学习的概念,使读者能够创建和使用物体检测器及分类器,甚至跟踪电影或者摄像头回传信号中的物体。随后我们将工作扩展到3D跟踪和增强现实。最后,在开发识别手写数字的应用程序并对人的性别和年龄进行分类时,我们将学习人工神经网络(Artificial Neural Network,ANN)和深度神经网络(Deep Neural Network,DNN)。
读完本书,你将获得正确的知识和技能,以着手实际的计算机视觉项目。
本书是为那些对计算机视觉、机器学习以及OpenCV在真实场景中的应用感兴趣的读者编写的,无论是计算机视觉新手,还是那些希望跟进OpenCV 4和Python 3的专家,都非常适合阅读本书。读者应该熟悉基本的Python编程知识,但是不需要具备图像处理、计算机视觉或机器学习的先验知识。
第1章解释如何基于Python 3在各种平台上安装OpenCV 4。本章还提供了常见问题的处理步骤。
第2章介绍OpenCV的I/O功能。本章还讨论了GUI项目的面向对象设计,我们将在其他章节中对该GUI项目进一步开发。
第3章介绍一些转换图像所需的技术,如颜色处理、图像锐化、物体轮廓标记以及几何形状检测。
第4章展示如何使用来自深度摄像头的数据识别前景和背景区域,以将效果限制在前景或背景。
第5章介绍基于OpenCV的一些人脸检测和识别功能,以及定义特定类型的可检测物体的数据文件。
第6章展示如何在OpenCV的帮助下描述图像的特征,以及如何利用特征进行图像匹配和搜索。
第7章结合计算机视觉和机器学习算法来定位和分类图像中的物体。本章还展示了如何使用OpenCV实现这种算法组合。
第8章演示跟踪和预测视频或实时摄像头中人和物体运动的方法。
第9章将构建一个增强现实应用程序,使用摄像头、物体和运动的信息,实时地将3D图形叠加到跟踪的物体上。
第10章介绍OpenCV中的人工神经网络和深度神经网络,并说明这些内容在实际应用中的用法。
附录描述颜色曲线的概念以及利用SciPy对其进行的实现。
读者至少要熟练掌握Python编程语言的基本知识。推荐使用Windows、macOS或Linux开发机。你可以参考第1章中关于安装OpenCV 4、Python 3以及其他依赖项的说明。
本书采用实践教学方法,包括77个示例脚本以及示例数据。阅读本书的时候,这些示例将有助于强化概念。
本书的代码是在BSD 3条款开放源码许可下发布的,这与OpenCV本身所使用的许可相同。鼓励读者使用、修改、改进示例程序,甚至发布对这些示例程序的更改。
本书的示例代码文件及截图、样图和视频文件,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的代码包也托管在GitHub的https://github.com/PackPublishing/Learning-opencv-4-Computer-Vision-with-Python-Third-Edition处。如果代码有更新,其上代码也会随之更新。
文本中的代码体:指示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、用户输入和Twitter句柄。例如“OpenCV提供了VideoCapture和VideoWriter类,它们支持各种视频文件格式”。
代码块示例:
代码块中需关注的部分加粗表示:
通常,命令行输入或输出这样表示:
对于Windows系统,命令行输入或输出这样表示:
表示警告或重要注意点。
表示提示和技巧。