智能硬件与机器视觉:基于树莓派、Python和OpenCV
书籍作者:陈佳林 |
ISBN:9787111667698 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:9306 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
内容简介
这是一部讲解如何利用树莓派、OpenCV、Python等软硬件构建智能硬件并在其上实现图像分析、文字识别、人脸识别与追踪、视频监控等机器视觉功能的实用性著作。
全书一共11章:
第1~4章首先讲解了机器视觉在智能硬件领域的应用场景以及智能硬件上4种常见的机器视觉技术方案;然后讲解了树莓派和OpenCV的安装、配置以及其他准备工作;*后通过一些简单的案例和代码手把手教读者如何使用OpenCV。
第5~11章是本书的核心内容,通过几个具体的综合案例讲解了如何使用树莓派低成本玩转如下机器视觉场景:拍摄照片和视频、处理相机的原始数据、道路和商场的人流统计、道路信息的文字识别、人脸识别与追踪、中央AI视频监控等。以上案例循序渐进,环环相扣,所有代码均可在树莓派上运行,可轻松移植到任何ARM开发板上。
作者简介
技术极客,“骨灰级”树莓派爱好者,在机器人、智能硬件、软硬件协同开发等方面有较深入的研究。
安全技术专家,看雪科技高级研究员,在移动安全领域经验丰富,多次主持召开银行、电信、政府及等行业的培训并参与安全项目的研究。作为团队成员参与GeekPwn2018挑战赛并获得亚军,多次在“看雪安全开发者峰会”“补天白帽大会”等会议上发表主题演讲。
著有《树莓派创客:手把手教你搭建机器人》《树莓派创客:手把手教你玩转人工智能》。
编辑推荐
适读人群 :对于Python-OpenCV、图像、机器视觉在树莓派等智能硬件、物联网硬件上的具体应用实例感兴趣的读者。
(1)作者是骨灰级树莓派极客,对树莓派有非常深入的研究,并进行了大量的实践,本书中的解决方案和案例均经过作者亲身实践。
(2)本书为图像分析、人脸识别、文字识别、人脸追踪、视频监控等常见的机器视觉应用提供了全套的树莓派解决方案。
(3)书中7个综合性案例,不仅讲解了技术原理和实现方法,而且给出了实现代码,所有代码均可运行在树莓派上并可移植到ARM开发板上。
前言
为什么要写这本书
面对这个问题,我的内心是复杂的。虽然我是一名理科生,但是我并不想用各种参数对比、性价比等冷冰冰的数字来回答这个问题,我想感性地、大声地、骄傲地回答这个问题,因为—我就是喜欢树莓派!
由于工作的原因,我身边总是围绕着大量的工程师,他们中的大多数都跟我一样,第一眼就喜欢上了这块电路板,而且再也离不开它,从2012年的第一代一直追到最新的3B+版本的人不在少数。同时,我还发现,这块电路板“软硬通杀”,不管是玩硬件的朋友,还是玩软件的朋友,都会对它爱不释手,并很快上手将其融合到自己的项目中。
树莓派是一款真正的“电脑”,凭借强劲的CPU性能,它无所不能,从上网、玩游戏、看电影、听音乐,到控制电路、控制传感器,再到科学计算、边缘计算、云计算,甚至深度学习、人工智能、图像识别、环境感知等高级应用,都可以做到轻松应对、游刃有余。
与此同时,树莓派始终保持非常低廉的售价,其官方售价一直是35美元,而一台完整的电脑则至少需要350美元。未来必将会出现越来越多的自动化工作,需要越来越多的程序员。降低计算机的普及门槛,让更多人更早接触编程,并且爱上编程,是必然趋势,而树莓派凭借其价格低廉、易上手、功能强大等特性会受到越来越多的人的青睐。
树莓派可以安装Android、Windows、Debian、Ubuntu、OSMC、PiNet、OpenNAS等各种功能丰富、适用于不同场景的操作系统,其功耗超低,用作服务器24小时不关机也不心疼,换一张TF卡,马上又是一个新系统,对于我们这些经常“蹂躏”系统环境的逆向工程师来讲,这些特性吸引力极大。
业余时间我经常跟同事一起,利用树莓派软硬结合的特性,搭建各种由树莓派充当“神经中枢”的机器人,也参加了一些机器人比赛,以期遇到更多喜欢树莓派的朋友,提升自身的技术水平,一起发扬树莓派提倡的创客文化。希望可以跟大家保持联系,多多交流。
内容提要
本书围绕“低成本玩转树莓派”这个主题,讲解了如何利用树莓派、OpenCV和Python等软硬件搭建一个低成本的智能硬件平台,并在其上实现图像分析、文字识别、人脸识别与追踪、视频监控等机器视觉功能。
全书一共11章。
第1~4章首先讲解了机器视觉在智能硬件领域的应用场景以及智能硬件上4种常见的机器视觉技术方案;然后讲解了树莓派和OpenCV的安装、配置以及其他准备工作;最后通过一些简单的案例和代码教读者使用OpenCV。
第5~11章是本书的核心内容,通过几个具体的综合案例讲解了如何使用树莓派低成本玩转如下机器视觉场景:拍摄照片和视频、处理相机的原始数据、道路和商场的人流统计、道路信息的文字识别、人脸识别与追踪、中央AI视频监控等。以上案例循序渐进,环环相扣,所有代码均可在树莓派上运行,并可轻松移植到任何ARM开发板上。
读者对象
机器视觉开发工程师
智能硬件开发工程师
专业树莓派爱好者
OpenCV开发者
更新和勘误
书本是静止的,知识是流动的,在书本编撰、出版、发行所占用的时间里,技术仍在不断更新,所谓活到老、学到老,也正是这个道理。在本书写作的过程中,树莓派已经推出第4版,OpenCV的版本也一直在升级,新版树莓派和OpenCV在性能上会有更好的表现。目前本书中的代码是兼容所有版本的树莓派的。考虑到机器视觉本身也是一门操作性极强的学科,读者在动手实践的过程中难免会产生各种各样的疑问,我特地准备了GitHub仓库(https://github.com/r0ysue/RaspPyOpenCV)对内容进行更新,也会将勘误放在这里,大家有疑问可以在该仓库的issue页面提出,我会尽力解答,希望可以跟大家一起学习,一起进步。
目录
前言
第1章 智能硬件与机器视觉1
1.1 机器视觉在智能硬件领域的应用1
1.1.1 机器视觉在智慧城市的应用2
1.1.2 机器视觉与5G的协同效应4
1.2 智能硬件上的机器视觉技术方案选型5
1.2.1 方案A:树莓派5
1.2.2 方案B:BeagleBoard7
1.2.3 方案C:NVIDIA Jetson8
1.2.4 方案D:Google Coral Dev Board + Edge TPU9
1.3 本章小结10
第2章 树莓派软硬件准备11
2.1 刷写系统11
2.2 硬件连接14
2.3 Linux系统的基本操作17
2.3.1 Linux常用命令17
2.3.2 Vim编辑器的使用19
2.4 远程连接树莓派20
2.4.1 使用SSH连接树莓派21
2.4.2 使用VNC连接树莓派24
2.5 使用相机模块拍摄一张照片28
2.6 本章小结31
第3章 安装OpenCV32
3.1 使用pip安装OpenCV32
3.1.1 在Ubuntu上使用pip安装OpenCV33
3.1.2 在macOS上使用pip安装OpenCV35
3.1.3 在树莓派上使用pip安装OpenCV36
3.1.4 注意事项38
3.2 树莓派源码编译安装OpenCV 439
3.2.1 扩展TF卡并安装依赖39
3.2.2 下载OpenCV 442
3.2.3 为OpenCV 4搭建基于Python 3的虚拟环境42
3.2.4 构建和编译OpenCV 444
3.2.5 测试OpenCV 447
3.2.6 可能遇到的问题47
3.3 本章小结49
第4章 通过案例手把手入门OpenCV50
4.1 开始前的准备50
4.1.1 环境准备50
4.1.2 项目代码准备51
4.2 OpenCV图像简单处理51
4.2.1 加载和显示图像51
4.2.2 访问单个像素53
4.2.3 数组切片和裁剪54
4.2.4 调整图像大小55
4.2.5 旋转图像57
4.2.6 平滑图像60
4.2.7 在图像上绘图60
4.2.8 运行第一个OpenCV教程的Python脚本64
4.3 OpenCV图像对象计数64
4.3.1 目标对象计数64
4.3.2 将图像转换为灰阶65
4.3.3 边缘检测67
4.3.4 阈值处理68
4.3.5 检测和绘制轮廓68
4.3.6 腐蚀和膨胀70
4.3.7 蒙版和按位操作71
4.3.8 运行第二个OpenCV教程的Python脚本72
4.4 本章小结72
第5章 使用Python拍摄照片、视频73
5.1 安装picamera环境73
5.1.1 安装Raspbian系统73
5.1.2 安装其他系统74
5.1.3 升级相机固件74
5.1.4 安装树莓派摄像头模组75
5.1.5 控制V1版的LED灯78
5.2 使用摄像头拍摄照片78
5.2.1 捕获照片并存为文件79
5.2.2 捕获照片并存为流79
5.2.3 捕获照片并存为PIL图像80
5.2.4 捕获调整了大小的图像80
5.2.5 快拍和连拍的技巧81
5.2.6 捕获延时摄影序列82
5.2.7 弱光下拍照82
5.2.8 网络直播83
5.3 使用摄像头拍摄视频85
5.3.1 录制视频文件85
5.3.2 录制视频流86
5.3.3 录制拆分为多个文件86
5.3.4 录制循环视频流87
5.3.5 录制网络视频流88
5.3.6 视频预览叠加图像加水印90
5.3.7 视频输出叠加文本、时间戳92
5.4 本章小结93
第6章 使用Python处理相机原始数据94
6.1 捕获并直接编码94
6.1.1 捕获并编码为numpy数组94
6.1.2 捕获并编码为opencv对象95
6.1.3 捕获未编码图像(YUV)96
6.1.4 捕获编码图像(RGB)99
6.1.5 自定义编码器100
6.2 多种捕获方法102
6.2.1 录像时截屏102
6.2.2 多种分辨率下录制103
6.2.3 特殊文件输出103
6.2.4 Bayer-Raw数据获取104
6.3 树莓派相机的实际应用109
6.3.1 自定义输出:运动检测相机的代码实现109
6.3.2 循环视频流切割:行车记录仪碰撞预警功能111
6.3.3 快速捕获和处理:连拍算法实现112
6.3.4 录制未经编码的视频:颜色检测116
6.3.5 快速捕获和流传输:网络流直播117
6.3.6 网络流媒体:结合网页技术直播119
6.3.7 录制运动矢量数据:检测视频中的手势121
6.4 常见错误集锦125
6.5 本章小结128
第7章 道路、商场人流统计129
7.1 原理解析130
7.1.1 目标检测与目标追踪130
7.1.2 形心追踪算法原理131
7.1.3 人群计数器原理133
7.2 软件环境准备134
7.3 使用Python实现人群计数器135
7.3.1 目录结构135
7.3.2 形心追踪器类CentroidTracker的实现135
7.3.3 追踪目标类TrackableObject的实现141
7.3.4 人群计数器的实现141
7.3.5 树莓派人群计数器测试149
7.4 本章小结149
第8章 道路信息文字识别150
8.1 EAST深度学习模型151
8.1.1 EAST模型简介151
8.1.2 相关软件包的安装152
8.1.3 项目工程结构153
8.2 检测图片中的文字153
8.2.1 代码编写和解读153
8.2.2 效果测试157
8.3 检测视频中的文字159
8.3.1 代码编写和解读159
8.3.2 效果测试163
8.4 对文字内容进行识别164
8.4.1 Tesseract介绍和安装164
8.4.2 使用Tesseract实现文字识别的原理166
8.4.3 代码编写和解读168
8.4.4 效果测试173
8.5 本章小结175
第9章 简单人脸追踪176
9.1 核心原理和效果简介176
9.2 环境准备和代码编写177
9.2.1 使用Python实现形心追踪算法177
9.2.2 人脸追踪的实现182
9.3 测试人脸跟踪效果186
9.3.1 测试效果186
9.3.2 缺陷与不足187
9.4 本章小结187
第10章 人脸追踪安防摄像头188
10.1 总体设计思路188
10.1.1 硬件组装清单188
10.1.2 PID控制反馈算法189
1
短评
好东东,实用
2020-11-30 19:26:47
新书,专业入门,非常值得学习
2020-11-22 21:04:42