前言
第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
展开