
本书是一本介绍Linux知识和应用技术的书籍,包含嵌入式Linux系统概述和6个典型案例:音频分析系统Linux开发案例、城市环境采集Linux开发案例、网络视频安防监控系统Linux开发案例、智能家居网关Linux开发案例、智能车牌识别Linux开发案例和AI人脸识别Linux开发案例。本书深入浅出地介绍了Linux知识和相关理论,以及相关领域的案例开发实践,将理论学习与实践结合起来。每个案例均附上完整的开发代码和配套PPT。读者可以在源代码的基础上快速进行二次开发。本书既可作为高等院校相关专业的教材或教学参考书,也可供相关领域的工程技术人员查阅,还可供人工智能开发、嵌入式系统开发、物联网系统开发爱好者阅读。
前 言 近年来,人工智能、物联网、移动互联网、大数据和云计算等信息技术迅速发展,慢慢改变了社会的生产方式,大大提高了生产效率和社会生产力。国家出台了多项信术技术的推动和鼓励措施与发展策略。其中,《国家新一代人工智能标准体系建设指南》(简称《指南》)提出建设目标:到2021年,明确人工智能标准化顶层设计,研究标准体系建设和标准研制的总体规则,明确标准之间的关系,指导人工智能标准化工作的有序开展,完成关键通用技术、关键领域技术、伦理等20项以上重点标准的预研工作;到2023年,初步建立人工智能标准体系,重点研制数据、算法、系统、服务等重点急需标准,并率先在制造、交通、金融、安防、家居、养老、环保、教育、医疗健康、司法等重点行业和领域推进,建设人工智能标准试验与验证平台,提供公共服务能力。《指南》还提出了国家新一代人工智能标准体系的建设思路、建设内容,并附上了人工智能标准研制方向明细。《指南》为人工智能技术和相关产业的发展指出了一条明确的路径,表明我国在推动人工智能应用方面的坚定决心,相信人工智能的应用会越来越普及。本书详细阐述了Linux相关理论基础和开发技术,提出了案例式和任务式驱动的开发方法,旨在大力推动嵌入式和人工智能人才技术领域的培养。 运用Linux开发技术的人工智能应用的数量繁多,本书介绍了6个典型案例:音频分析系统Linux开发案例、城市环境采集Linux开发案例、网络视频安防监控系统Linux开发案例、智能家居网关Linux开发案例、智能车牌识别Linux开发案例和AI人脸识别Linux开发案例。本书详细分析了Linux技术在相关领域的应用,理论知识点清晰,并为每个知识点附上实践案例,带领读者掌握Linux开发技术。 第1章 简述嵌入式系统的特点、组成和发展过程,介绍嵌入式Linux操作系统,以及Linux技术在嵌入式和人工智能领域的应用。 第2章 分析Linux技术在音频分析系统中的应用。①系统总体设计与Linux驱动开发:先进行系统总体设计分析,分析点阵屏和OLED Linux驱动开发,并实现显示模块驱动开发与测试。②音频分析系统开发:介绍音频频谱分析和功能开发,音频处理功能开发和上位机控制应用开发,并实现音频分析显示开发实践。 第3章 分析Linux技术在城市环境采集中的应用。①系统总体设计与Linux驱动开发:先进行系统总体设计分析,接着介绍嵌入式Web服务器应用、Boa服务器的移植与测试、CGI开发技术,实现嵌入式Web服务器应用开发。②城市扬尘监测系统开发:依次介绍软件界面框架分析、TVOC Linux驱动开发、LED Linux驱动开发、PWM Linux驱动开发、扬尘检测功能设计,实现扬尘检测系统开发实践。 第4章 分析Linux技术在网络视频安防监控系统中的应用。①系统总体设计与Linux驱动开发:先进行系统总体设计分析,接着介绍mjpg-streamer功能架构、mjpg-streamer开发调试和mjpg-streamer视频采集程序设计,并实现基于USB摄像头的网络安防监控。②视频安防监控报警功能开发:先进行软件界面框架分析,接着介绍配置信息保存功能设计、燃气传感器Linux驱动开发、报警管理功能设计、报警拍照功能设计,并实现视频安防系统开发实践。 第5章 分析Linux技术在智能家居网关中的应用。①Linux网关服务框架:介绍物联网网关、智云物联平台和平台开发调试工具,实现智能网关组网与测试开发实践。②Linux智能网关设计:依次介绍Linux智能网关系统分析、协议解析服务设计、地址缓存服务设计和数据处理服务设计,实现Linux智能网关本地服务设计开发实践。③Linux网关远程服务设计:包括Linux智能网关远程服务设计总体介绍,TCP网络服务设计,MQTT数据服务设计和Linux网关协议设计,实现Linux网关远程服务设计开发实践。 第6章 分析Linux技术在智能车牌识别中的应用。①系统总体设计与OpenCV开发框架:先进行系统总体设计分析,再简述OpenCV技术,分析OpenCV开发环境和OpenCV常用接口,并实现OpenCV视频流采集开发实践。②车牌识别功能开发:介绍车牌识别原理,分析卷积神经网络技术、车牌识别开源库、图像与视频文件识别程序设计,实现视频车牌识别开发实践。③基于Flask的车牌识别功能开发:介绍Flask应用框架,进行Flask安装与测试和Flask应用分析,实现Flask视频车牌识别开发实践。 第7章 分析Linux技术在AI人脸识别中的应用。①系统总体设计与Linux驱动开发:先进行系统总体设计分析,再简述人脸识别开发平台和Web应用框架——Django,实现AI人脸识别应用框架设计。②AI人脸识别功能开发:介绍人脸注册与人脸识别接口,分析人脸注册与人脸识别功能程序和闸机控制功能,实现人脸识别功能开发。 本书特色有: (1)理论知识与案例实践相结合。将常见Linux技术和生活中实际案例结合起来,便于读者边学习理论知识边开发,快速深刻掌握短距离无线通信技术。 (2)案例开发。未用传统的理论学习方法,选取生动的案例将理论与实践结合起来,通过理论学习和开发,帮助读者快速入门。本书提供配套PPT资源,读者可由浅入深地掌握Linux技术。 (3)提供综合性项目。综合性项目为读者提供软硬件系统的开发方法,有需求分析、项目架构、软硬件设计等方法,读者在书中所提供案例的基础上可以快速进行二次开发,方便将其转化为各种比赛和创新创业的案例。本书也可以作为工程技术开发人员和科研工作人员进行工程设计和科研项目开发的参考资料。 本书既可作为高等院校相关专业师生的教学、自学参考书,也可供相关领域的工程技术人员查阅。对于物联网开发爱好者,本书也是一本简单实用的工具书。 本书在编写过程中,借鉴和参考了国内外专家、学者、技术人员的相关研究成果,笔者尽可能按学术规范予以说明,但难免有疏漏之处,在此谨向有关作者表示深深的敬意和谢意。如有疏漏,请通过出版社与笔者联系。 本书得到了广东省自然科学基金项目(2018A030313195)、广东省高校重点科研项目(2020ZDZX3084)的资助。感谢中智讯(武汉)科技有限公司在本书编写过程中提供的帮助,特别感谢电子工业出版社在本书出版过程中给予的大力支持。 本书涉及的知识面广,由于笔者水平和时间精力限制,书中疏漏之处在所难免,敬请广大读者和专家不吝赐教。
第1章 嵌入式Linux系统概述 (1) 1.1 嵌入式系统概述 (1) 1.2 嵌入式Linux技术 (3) 1.2.1 Linux简介 (3) 1.2.2 Linux发行版本 (3) 1.2.3 嵌入式Linux技术的特点 (4) 1.2.4 嵌入式技术的应用 (4) 第2章 音频分析系统Linux开发案例 (7) 2.1 系统总体设计与Linux驱动开发 (7) 2.1.1 系统总体设计 (7) 2.1.2 开发平台 (8) 2.1.3 点阵屏Linux驱动开发 (10) 2.1.4 OLED Linux驱动开发 (24) 2.1.5 开发实践:显示模块驱动开发与测试 (37) 2.1.6 小结 (40) 2.1.7 思考与拓展 (40) 2.2 音频分析系统开发 (40) 2.2.1 频谱分析显示功能开发 (40) 2.2.2 音频处理功能开发 (43) 2.2.3 上位机控制应用开发 (47) 2.2.4 开发实践:音频分析显示 (57) 2.2.5 小结 (61) 2.2.6 思考与拓展 (62) 第3章 城市环境采集Linux开发案例 (63) 3.1 系统总体设计与Linux驱动开发 (63) 3.1.1 系统总体设计 (63) 3.1.2 嵌入式Web服务器应用 (65) 3.1.3 Boa服务器的移植与测试 (66) 3.1.4 CGI开发技术 (68) 3.1.5 开发实践:嵌入式Web服务器应用 (70) 3.1.6 小结 (75) 3.1.7 思考与拓展 (75) 3.2 城市扬尘监测系统开发 (75) 3.2.1 软件界面框架分析 (75) 3.2.2 TVOC Linux驱动开发 (76) 3.2.3 LED Linux驱动开发 (79) 3.2.4 PWM Linux驱动开发 (86) 3.2.5 扬尘检测功能设计 (93) 3.2.6 开发实践:扬尘检测系统 (99) 3.2.7 小结 (103) 3.2.8 思考与拓展 (104) 第4章 网络视频安防监控系统Linux开发案例 (105) 4.1 系统总体设计与Linux驱动开发 (105) 4.1.1 系统总体设计 (105) 4.1.2 mjpg-streamer功能架构 (106) 4.1.3 mjpg-streamer开发调试 (109) 4.1.4 mjpg-streamer视频采集程序设计 (110) 4.1.5 开发实践:基于USB摄像头的网络视频监控 (112) 4.1.6 小结 (114) 4.1.7 思考与拓展 (114) 4.2 视频安防监控报警功能开发 (114) 4.2.1 软件界面框架分析 (114) 4.2.2 配置信息保存功能设计 (115) 4.2.3 燃气传感器Linux驱动开发 (117) 4.2.4 报警管理功能设计 (123) 4.2.5 报警拍照功能设计 (131) 4.2.6 开发实践:视频安防监控系统 (133) 4.2.7 小结 (137) 4.2.8 思考与拓展 (137) 第5章 智能家居网关Linux开发案例 (139) 5.1 Linux网关服务框架 (139) 5.1.1 物联网网关 (139) 5.1.2 智云物联平台 (140) 5.1.3 平台开发调试工具 (141) 5.1.4 开发实践:智能网关的组网与测试 (142) 5.1.5 小结 (151) 5.1.6 思考与拓展 (151) 5.2 Linux智能网关设计 (151) 5.2.1 Linux智能网关系统分析 (151) 5.2.2 协议解析服务设计 (152) 5.2.3 地址缓存服务设计 (165) 5.2.4 数据处理服务设计 (176) 5.2.5 开发实践:Linux智能网关本地服务设计 (185) 5.2.6 小结 (189) 5.2.7 思考与拓展 (189) 5.3 Linux网关远程服务设计 (189) 5.3.1 Linux网关远程服务设计总体介绍 (189) 5.3.2 TCP网络服务设计 (193) 5.3.3 MQTT数据服务设计 (200) 5.3.4 Linux网关协议设计 (209) 5.3.5 开发实践:Linux网关远程服务设计 (215) 5.3.6 小结 (224) 5.3.7 思考与拓展 (224) 第6章 智能车牌识别Linux开发案例 (225) 6.1 系统总体设计与OpenCV开发框架 (225) 6.1.1 系统总体设计 (225) 6.1.2 OpenCV技术简介 (226) 6.1.3 OpenCV开发环境 (227) 6.1.4 OpenCV常用接口 (229) 6.1.5 开发实践:OpenCV视频流采集 (232) 6.1.6 小结 (235) 6.1.7 思考与拓展 (235) 6.2 车牌识别功能开发 (235) 6.2.1 车牌识别原理 (235) 6.2.2 卷积神经网络技术 (236) 6.2.3 车牌识别开源库 (238) 6.2.4 图像与视频文件识别程序设计 (245) 6.2.5 开发实践:视频车牌识别 (247) 6.2.6 小结 (250) 6.2.7 思考与拓展 (250) 6.3 基于Flask的车牌识别功能开发 (250) 6.3.1 Flask应用框架简介 (250) 6.3.2 Flask安装与测试 (251) 6.3.3 Flask应用分析 (252) 6.3.4 开发实践:基于Flask的视频车牌识别 (259) 6.3.5 小结 (263) 6.3.6 思考与拓展 (263) 第7章 AI人脸识别Linux开发案例 (265) 7.1 系统总体设计与Linux驱动开发 (265) 7.1.1 系统总体设计 (265) 7.1.2 人脸识别开发平台 (267) 7.1.3 Web应用框架—Django (268) 7.1.4 开发实践:搭建AI人脸识别应用框架 (271) 7.1.5 小结 (273) 7.1.6 思考与拓展 (273) 7.2 AI人脸识别功能开发 (274) 7.2.1 人脸注册与人脸识别接口 (274) 7.2.2 人脸注册与人脸识别功能程序分析 (277) 7.2.3 闸机控制功能分析 (278) 7.2.4 开发实践:人脸识别功能开发 (279) 7.2.5 小结 (285) 7.2.6 思考与拓展 (285) 参考文献 (287)