《OpenCV 4计算机视觉项目实战 》

举报
华章计算机 发表于 2019/11/09 22:36:45 2019/11/09
【摘要】 本节书摘来自华章计算机《OpenCV 4计算机视觉项目实战》 一作者[西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendon。

智能系统与技术丛书

OpenCV 4计算机视觉项目实战

(原书第2版)

Learn OpenCV 4 By Building Projects, Second Edition



1573309805591573.jpg



[西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)

[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendon

 

 

 


 

 

 

 Preface 

 前  言

OpenCV是用于开发计算机视觉应用程序的最流行的库之一,它使我们能够实时运行许多不同的计算机视觉算法。它已存在很多年了,并且已经成为该领域的标准库。OpenCV的主要优势之一是它经过高度优化,几乎可以在所有平台上使用。

本书首先简要介绍计算机视觉的各个领域以及相关的OpenCV函数,这些函数均用C++编写。每章都包含实际的例子和代码示例,用于演示用例。这有助于你轻松掌握主题并了解如何在现实生活中应用它们。综上所述,这是一本实用的指导书,你将从中学会如何在C++中使用OpenCV并使用这个库构建各种应用程序。

本书目标读者

本书面向不熟悉OpenCV并希望在C++中使用OpenCV开发计算机视觉应用程序的开发人员。了解C++的基本知识将有助于理解本书。本书对于想要学习计算机视觉入门知识并理解基本概念的人也很有用。他们应该了解基本的数学概念,例如向量、矩阵和矩阵乘法,以便充分利用本书。在阅读本书的过程中,你将学会如何使用OpenCV从零开始构建各种计算机视觉应用程序。

本书涵盖内容

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

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

第3章介绍如何构建图形用户界面和鼠标事件检测器,以构建交互式应用程序。

第4章探讨直方图和滤波器,并展示如何对图像进行卡通化处理。

第5章描述各种图像预处理技术,如噪声消除、阈值处理和轮廓分析。

第6章处理目标识别和机器学习,以及如何使用支持向量机来构建目标分类系统。

第7章讨论人脸检测和Haar级联,然后解释这些方法如何用于检测人脸的各个部位。

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

第9章介绍如何使用不同技术跟踪实时视频中的目标,例如,基于颜色和基于特征进行跟踪。

第10章讨论光学字符识别、文本分割,并介绍Tesseract OCR引擎。

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

第12章探讨如何使用两种常用的深度学习架构在OpenCV中应用深度学习,在这两种架构中,YOLO v3用于目标检测,而单发探测器(Single Shot Detector)用于人脸检测。

如何充分利用本书

了解C++的基本知识将有助于理解本书内容。这些例子使用以下技术进行构建:OpenCV 4.0、CMake 3.3.x或更新版本、Tesseract、Leptonica(依赖于Tesseract)、Qt(可选)和OpenGL(可选)。

相关章节提供了详细的安装说明。

下载示例代码

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

本书的代码包还托管在GitHub上,如果代码有更新,会在现有的GitHub库上更新:https://github.com/PacktPublishing/Learn-OpenCV-4-By-Building-Projects-Second-Edition。

下载彩***像

本书提供了一个PDF文件,其中包含书中使用的屏幕截图/图表的彩***像:https://www.packtpub.com/sites/default/files/downloads/9781789341225_ColorImages.pdf。

 

 

About the authors  

作者简介

大卫·米兰·埃斯克里瓦(David Millán Escrivá)8岁时用BASIC语言在8086 PC上编写了他的第一个程序。他在瓦伦西亚政治大学(Universitat Politécnica de Valencia)完成了他的IT学习,并在由使用OpenCV(v0.96)的计算机视觉技术所支持的人机交互领域取得了优异的成绩。他拥有人工智能、计算机图形学和模式识别硕士学位,专注于模式识别和计算机视觉。他还拥有超过9年的计算机视觉、计算机图形和模式识别经验。他是Damiles Blog的作者,在上面发表关于OpenCV、计算机视觉和光学字符识别算法的文章与教程。

 

我要感谢我的妻子Izaskun、女儿Eider和儿子Pau,他们始终保持无限的耐心并坚定地支持我。他们改变了我的生活,让我的每一天都变得很棒。我爱你们。

我要感谢OpenCV团队和社区给予我们这个精彩的库。我还要感谢我的合著者,感谢Packt出版社支持并帮助我完成本书。

 

维尼休斯·G.门东萨(Vinícius G. Mendon是巴拉那天主教大学(PUCPR)的计算机图形专业教授。他于1998年开始使用C++进行编程,并于2006年进入计算机游戏和计算机图形领域。他目前是巴西Apple开发者学院(Apple Developer Academy)的导师,从事用于移动设备的金属、机器学习和计算机视觉方面的教学工作。他曾担任其他Packt图书的审校者,包括《OpenNI Cookbook》和《Mastering OpenCV and Computer Vision with OpenCV 3 and Qt5》。在他的研究中,使用了Kinect、OpenNI和OpenCV来识别巴西手语手势。他感兴趣的领域包括移动电话、OpenGL、图像处理、计算机视觉和项目管理。

 

我要感谢我的妻子Thais A. L. Mendon

普拉蒂克·乔希(Prateek Joshi)是一位人工智能研究员、8本书的作者,还是一位TEDx演讲者。他的著作曾入选Forbes 30 Under 30、CNBC、TechCrunch、Silicon Valley Business Journal等多部出版物。他是Pluto AI的创始人,Pluto AI是一家由风投资助的硅谷初创公司,为水利设施建立智能平台。他毕业于南加州大学,获得人工智能专业硕士学位。他之前曾就职于NVIDIA和Microsoft Research。

 

 

 

 

Brief introduction of reviser  

审校者简介

Marc Amberg是一位经验丰富的机器学习和计算机视觉工程师,拥有在IT和服务行业工作的成功经验。他擅长Python、C/C++、OpenGL、3D重建和Java。他是一名优秀的工程专家,在里尔科学与技术大学(里尔一世)(Université des Sciences et Technologies de Lille (Lille I))获得了计算机科学(图像、视觉和交互)硕士学位。

Vincent Kok目前是英特尔运输工业部门的一名软件平台应用工程师。他毕业于马来西亚理科大学(USM),获得了电子工程学位。目前,他正在USM攻读嵌入式系统工程硕士学位。Vincent积极参与开发者社区,并定期参加在世界各地举办的Maker Faire活动。他喜欢设计电子硬件套件,并在业余时间为初学者提供焊接/Arduino课程。

 

 

 

Contents

目  录  


前言

作者简介

审校者简介

第1章 OpenCV入门  1

1.1 了解人类视觉系统       1

1.2 人类如何理解图像内容      3

1.3 你能用OpenCV做什么      4

1.3.1 内置数据结构和输入/输出     4

1.3.2 图像处理操作     5

1.3.3 GUI  5

1.3.4 视频分析      6

1.3.5 3D重建 6

1.3.6 特征提取      7

1.3.7 对象检测      7

1.3.8 机器学习      8

1.3.9 计算摄影      8

1.3.10 形状分析    9

1.3.11 光流算法    9

1.3.12 人脸和对象识别      9

1.3.13 表面匹配    10

1.3.14 文本检测和识别      10

1.3.15 深度学习    10

1.4 安装OpenCV  10

1.4.1 Windows      11

1.4.2 Mac OS X     11

1.4.3 Linux      13

1.5 总结   14

第2章 OpenCV基础知识导论       15

2.1 技术要求  15

2.2 基本CMake配置文件 16

2.3 创建一个库     16

2.4 管理依赖项     17

2.5 让脚本更复杂 18

2.6 图像和矩阵     20

2.7 读/写图像 22

2.8 读取视频和摄像头       25

2.9 其他基本对象类型       27

2.9.1 Vec对象类型      27

2.9.2 Scalar对象类型  28

2.9.3 Point对象类型   28

2.9.4 Size对象类型     29

2.9.5 Rect对象类型     29

2.9.6 RotatedRect对象类型      29

2.10 基本矩阵运算      30

2.11 基本数据存储      32

2.12 总结 34

第3章 学习图形用户界面       35

3.1 技术要求  35

3.2 OpenCV用户界面介绍       36

3.3 OpenCV的基本图形用户界面  36

3.4 Qt图形用户界面   44

3.5 OpenGL支持  50

3.6 总结   54

第4章 深入研究直方图和滤波器  55

4.1 技术要求  56

4.2 生成CMake脚本文件 56

4.3 创建图形用户界面       57

4.4 绘制直方图     59

4.5 图像颜色均衡 62

4.6 Lomography效果 64

4.7 卡通效果  68

4.8 总结   72

第5章 自动光学检查、对象分割和检测    73

5.1 技术要求  73

5.2 隔离场景中的对象       74

5.3 为AOI创建应用程序   76

5.4 预处理输入图像    78

5.4.1 噪声消除      78

5.4.2 用光模式移除背景进行分割  79

5.4.3 阈值       84

5.5 分割输入图像 85

5.5.1 连通组件算法     85

5.5.2 findContours算法     90

5.6 总结   92

第6章 学习对象分类 94

6.1 技术要求  94

6.2 机器学习概念介绍       95

6.3 计算机视觉和机器学习工作流程    98

6.4 自动对象检查分类示例      100

6.4.1 特征提取      102

6.4.2 训练SVM模型   105

6.4.3 输入图像预测     109

6.5 总结   111

第7章 检测面部部位与覆盖面具  112

7.1 技术要求  112

7.2 了解Haar级联      112

7.3 什么是积分图像    114

7.4 在实时视频中覆盖面具      115

7.5 戴上太阳镜     118

7.6 跟踪鼻子、嘴巴和耳朵      121

7.7 总结   122

第8章 视频监控、背景建模和形态学操作       123

8.1 技术要求  123

8.2 理解背景减除 124

8.3 直接的背景减除    124

8.4 帧差分      128

8.5 高斯混合方法 131

8.6 形态学图像处理    133

8.7 使形状变细     134

8.8 使形状变粗     135

8.9 其他形态运算符    136

8.9.1 形态开口      136

8.9.2 形态闭合      137

8.9.3 绘制边界      138

8.9.4 礼帽变换      139

8.9.5 黑帽变换      140

8.10 总结 140

第9章 学习对象跟踪 141

9.1 技术要求  141

9.2 跟踪特定颜色的对象   141

9.3 构建交互式对象跟踪器      143

9.4 用Harris角点检测器检测点     148

9.5 用于跟踪的好特征       151

9.6 基于特征的跟踪    153

9.6.1 Lucas-Kanade方法   153

9.6.2 Farneback算法   157

9.7 总结   161

第10章 开发用于文本识别的分割算法      162

10.1 技术要求       162

10.2 光学字符识别介绍     162

10.3 预处理阶段   164

10.3.1 对图像进行阈值处理     164

10.3.2 文本分割    165

10.4 在你的操作系统上安装Tesseract OCR      172

10.4.1 在Windows上安装Tesseract    172

10.4.2 在Mac上安装Tesseract      173

10.5 使用Tesseract OCR库     173

10.6 总结 177

第11章 用Tesseract进行文本识别     178

11.1 技术要求       178

11.2 文本API的工作原理 179

11.2.1 场景检测问题   179

11.2.2 极值区域    180

11.2.3 极值区域过滤   181

11.3 使用文本API 182

11.3.1 文本检测    182

11.3.2 文本提取    187

11.3.3 文本识别    189

11.4 总结 193

第12章 使用OpenCV进行深度学习  194

12.1 技术要求       194

12.2 深度学习简介      195

12.2.1 什么是神经网络,我们如何从数据中学习    195

12.2.2 卷积神经网络   197

12.3 OpenCV中的深度学习    198

12.4 YOLO用于实时对象检测 199

12.4.1 YOLO v3深度学习模型架构       200

12.4.2 YOLO数据集、词汇表和模型    200

12.4.3 将YOLO导入OpenCV 201

12.5 用SSD进行人脸检测       204

12.5.1 SSD模型架构   204

12.5.2 将SSD人脸检测导入OpenCV   204

12.6 总结 208


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。