版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能座舱系统开发应用与测试手势交互系统开发与测试05学习任务五手势分割·MediaPipe21关键点·固件烧入测试授课团队智能网联汽车技术专业教学团队职业教育智能网联汽车类专业活页式创新教材课程目录CONTENTS·02/5701走进智能座舱02语音交互系统开发与测试03人脸识别交互系统开发与测试04驾驶员监控系统开发与测试05手势交互系统开发与测试06智能座舱显示触控系统的装调与测试07智能座椅装调与测试08智能座舱OTA与远程控制系统装调与测试学习任务6·智能座舱显示触控系统的装调与测试02/57本讲内容Contents本任务的六个教学段落01任务导入任务描述·育人目标·任务接受02任务分析知识/技能目标·三个子任务分解03任务资讯概念·分类·分割·分析·识别·MediaPipe04任务准备设备工具·安全·检查·互联与启动05任务实施21点标记·手势识别代码·烧入与测试06清洁整理一键还原·现场6S·任务小结学习任务5·手势交互系统开发与测试02/59TASK05手势交互系统开发与测试让座舱"看得懂手势"掌握分割·分析·识别的算法与MediaPipe实现本章围绕"关键点标记—手势识别开发—固件烧入与测试"三个子任务展开一、任务导入·任务描述手势——最古老的"母语"手势交流是人的本能,在学会语言和文字之前,人就已经能用肢体语言与他人交流。而现在,随着科技的发展,也能用手势与汽车这样的无生命体进行交流,只要一个手势就能让它播放音乐、开天窗,甚至跟着手势自动挪车……手势识别已经成为智能座舱卖点之一。理想L7/L9配备手势识别智能座舱系统,挥手之间完成多媒体操作长城WEY摩卡只需简单的三个手势就可以把一辆熄火的汽车起动,并自动开到驾驶员跟前长安深蓝电动汽车可以让驾驶员在座舱内拍照并自主设置手势功能问界智能驾驶可以识别交警手势,把车外场景也纳入感知范围手势识别已成为智能座舱的重要卖点岗位情境作为一名专业的智能汽车技术员,您知道座舱手势交互功能的原理,并能够自己设计开发出手势交互系统吗?本任务将从"手势是什么"出发,依次讲清手势的分割、分析、识别三大关键技术,最终用MediaPipe+OpenCV在台架上跑通程序,并烧入教学车控制刮水器与车窗。学习任务5·手势交互系统开发与测试04/59一、任务导入·育人目标知识与技能矩阵知知识目标1能简述手势交互系统的概念2能概述手势交互的工作原理3能概述手势交互系统在智能座舱的应用结合附件课件补充:还需熟悉多媒体机器学习模型应用框架MediaPipe及其应用。技技能目标1能够正确编写代码设置图像感兴趣区域(ROI)2能够正确编写代码判断手指屈伸状态3能够正确编写代码实现手势检测4能够熟练使用工具对手势识别功能进行调试5能够独立在整车环境中完成手势识别系统的测试五项技能层层递进,覆盖"写代码—会调试—能上车"的完整链路。素素养目标1培养民族自信心和爱国主义情操2拓宽动手能力和实践精神3培养团队合作精神手势识别在国产新能源汽车上的规模化落地,是讲好中国汽车故事的鲜活素材。学习任务5·手势交互系统开发与测试05/59一、任务导入·任务接受思政融入任务接受熟悉手势交互系统在智能座舱中人机交互的应用,了解智能座舱中手势交互的新技术对我国汽车产业发展促进作用,引导敬业、创新能力培养;通过介绍手势识别在我国新能源汽车上的应用增强民族自信心,培养爱国主义情操,全面体现爱国、和谐、敬业的社会主义核心价值观。为什么要学这一段手势识别还未广泛应用在量产车上,但已成为高端商务车与新能源汽车智能座舱的高端配置,是彰显汽车品质的重要抓手,也是国产车型实现差异化竞争的技术高地。思政触点理想、长城WEY、长安深蓝、问界等中国品牌在手势量产落地上走在前列,是"新四化"背景下中国汽车工业由跟跑到并跑的直观注脚。职业素养要求台架调试与整车测试环节要求规范着装、正确设置安全围挡、戴好手套;调试时必须脱下工作手套,测试完成后立即戴回。01敬业严格按工艺步骤完成检查、连接、烧入与测试02创新在理解算法原理基础上自主调整ROI与手势映射03协作两人一组,编程、操作、记录分工配合04安全高压操作、旋转刮水器、升降车窗均须专人确认学习产出:完成本任务后,学生应能独立提交一份可识别1~5手势的Python程序,并在教学车上完成刮水器与车窗的手势控制实测记录。学习任务5·手势交互系统开发与测试06/59二、任务分析·子任务分解先拆解,再动手要完成在座舱中加装手势识别验证的需求任务,需要将任务分解为三个子任务,从"看得见手"到"认得出手势",最后真正的控制车身执行器。1子任务1手势交互系统21个关键点标记的Python代码开发基于MediaPipe+OpenCV,把手部的21个骨骼关键点检测出来并画在实时画面上。关键词:hand_test.py·关键点可视化2子任务2手势交互系统中常见手势识别Python代码开发继子任务1之后,加入手指屈伸判断与手势映射,要求对手势1~5完成识别。关键词:hand_main.py·屈伸判定·手势映射3子任务3手势交互系统的固件烧入和测试把代码烧入教学车,驾驶员做规定手势时,可以开启车窗或者刮水器。关键词:SSH烧入·刮水器·车窗技术栈PythonMediaPipeOpenCVNumPy摄像头:笔记本摄像头/座舱内摄像头三个子任务之间并非并列关系,而是逐层依赖:没有稳定的关键点检测,就无法判断手指是否伸直;没有准确的手势识别结果,烧入后也就无法可靠控制执行器。学习任务5·手势交互系统开发与测试07/59三、任务资讯十个知识节点本节按照"是什么→怎么分类→怎么取得→怎么处理→怎么识别→怎么用Python实现"的认知顺序展开。一手势概念动态手势与静态手势二手势的分类运动特点/传统习惯三手势识别定义计算机科学中的议题四手势获取技术视觉传感器/可穿戴五工作流程和原理分割—分析—识别六手势分割肤色/轮廓/运动/深度学习七手势分析特征提取和分析八手势识别2D/3D·三类方法·DCNN九优缺点四项优点/四项缺点十MediaPipe+OpenCV21个手部关键点贯穿全章的一条主线手势交互系统手势识别的核心技术为:手势分割、手势分析(特征提取和分析)以及手势识别。第六、七、八三个节点是重中之重,也是实操环节代码实现的能力基础。学习地图图像获取→手势分割→手势分析→手势识别静态手势或动态手势,其识别顺序都是:先通过摄像头获取RGB原始图像→在图像中进行手势分割得到手部区域→在此基础上进行手势分析→最后通过识别算法实现手势识别。手部检测定位与手势分割一般同时进行,统称"手势检测分割"学习任务5·手势交互系统开发与测试08/59(一)手势概念图5-1手势通常指的是人在使用手臂时所体现出的具体动作与体位,分为动态手势和静态手势,它是人类最早使用的、至今仍被广泛运用的一种交际工具。图5-1古人类利用手势交互进行捕猎为什么从"古人类"讲起手势先于语言而存在。理解这一点,就能理解为什么把手势引入座舱后,用户的学习成本几乎为零。可被赋予特定含义手势可被赋予各种特定的含义,具有表现力强和灵活性高的特点。双向作用通道手势既是人类表述情感及意图的自然手段,也是人类给予外界影响的重要方式之一。座舱中的现实价值驾驶员视线无需离开路面,仅凭手部动作即可完成多媒体、导航、空调等操作,降低分心带来的安全风险。手势既是表达手段,也是影响外界的方式术语对齐:静态手势又称手形/姿态(posture);动态手势则包含手随时间变化的形状、位置与运动轨迹,通常可划分为准备、开始、执行、结束、收回五个阶段。学习任务5·手势交互系统开发与测试09/59(二)手势的分类两种分类视角教材给出两条分类路径:①基于运动特点;②通过手势传达指令的传统习惯。前者决定算法选型,后者决定交互设计的语义。静态手势手部姿势/姿态静止不动的手势称为静态手势。是一类特殊的动态手势,主要依靠手部外形与轮廓来传达信息。分类标准:指向·弯曲形状·弯曲程度·与身体其他部分的相互位置关系·上下文语境例:握拳、OK、胜利动态手势有运动轨迹特征有运动轨迹特征的手势称为动态手势。手的形状、位置都随时间发生变化,包含更丰富、更准确的信息。分类标准:位置/轨迹·运动速度/方向·运动幅度例:挥手、左右滑动、画圈图5-2国际通用手势(OK、好、胜利)图5-3讲演中的自由手势集合规定的手势符合人们约定俗成的习惯,例如国际通用手势OK、好(Good)、胜利(Victory)。含义稳定、跨人群一致,最适合直接映射为座舱指令。自由形式的手势不传达手势的象征意义或隐喻,一般是人们根据当时当地的语境自由组织身体语言表达一定的意义,如讲演中的手势集合。静态手势与动态手势的识别分支学习任务5·手势交互系统开发与测试10/59(三)手势识别定义图5-4定
义在计算机科学中,手势识别是指一种利用数学算法,包括计算机图形学,辅以摄像头、数据手套等输入工具,针对收集到的信息,如手掌、手指各关节的方位、角度等,进行判断、分析并给出正确回复的技术。用户可以使用简单的手势来控制设备或与设备交互,让计算机理解人类的行为。定义拆成四个要素算法数学算法+计算机图形学是识别的"大脑"输入工具摄像头、数据手套等负责把动作数字化采集信息手掌、手指各关节的方位与角度输出结果判断、分析并给出正确回复图5-4借助算法手势识别0-5"手势——一种无声的语言"手势是一种无声的语言,人们在生活中借用手势,可以表达各种各样的感情。现在,人还可以与计算机之间进行手势互动——座舱里那枚小小的摄像头,就是这套"无声语言"的听筒。本任务识别目标:阿拉伯数字手势1~5学习任务5·手势交互系统开发与测试11/59(三)手势识别的车载应用为什么座舱需要手势车载手势交互技术迅速发展。汽车用户界面通过手势输入可以操控车载信息系统,辅助驾驶员完成驾驶过程中的多项任务,让驾驶员更加专心于驾驶,提升驾驶安全性。信息娱乐播放音乐、切换歌曲、调节音量车身控制刮水器、车窗、天窗、空调通话处理接听与挂断电话,视线不离开路面导航交互缩放地图、选择路线、切换视角车外感知识别交警手势,辅助智能驾驶决策多乘员场景主驾、副驾与后排乘客分区交互手势输入让用户界面脱离实体按键图5-4借助算法实现的手势识别0-5产业现状:宝马7系是全球第一个装载手势识别的量产车型,宝马家族5系、X3、X5、X7均已搭载;国内理想、长城WEY、长安深蓝、问界等品牌也已规模化落地,手势识别已成为高端商务车与新能源汽车的重要差异化配置。学习任务5·手势交互系统开发与测试12/59(四)手势获取技术分类两大技术路线目前应用较多的手势获取技术包括基于视觉传感器技术和基于可穿戴智能设备两类。基于视觉传感器裸手操作·无干扰应用最广泛的是不同类型的摄像头,如单目摄像头、双目摄像头、多目摄像头、环视摄像头等。单目双目多目环视深度优势:对用户无干扰或少干扰,可直接裸手操作基于可穿戴智能设备智能手套需要对用户佩戴的手套、戒指、手镯、带加速计的腕带等设备输出的数据进行识别。弯曲传感器姿态模块触点HUB不足:需在手上加装传感器,对用户有一定干扰图5-6手势识别可穿戴设备智能手套的四大特点(1)感知反馈实时感知手部运动和触觉信息(2)灵活度高轻便舒适,不影响手部正常活动(3)智能控制可通过蓝牙、Wi-Fi远程操控(4)适应性强适应不同行业与场景需求应用前景智能手套融合了先进传感器、微电子、人工智能等技术,在医疗、工业、军事和无人驾驶等领域有重要应用。本任务采用视觉传感器路线:成本低、非接触、符合量产车实际形态。学习任务5·手势交互系统开发与测试13/59(四)视觉传感器的工作原理图5-5视觉传感器是由镜头、图像传感器、模数转换器、图像处理器、图像存储器等组成,能够对摄像机拍摄到的图像进行图像处理,来计算对象物的特征量(面积、重心、长度、位置等),并能输出数据和判断结果的传感器。镜头采集光学图像→图像传感器CCD/CMOS光电转换→模数转换器模拟转数字→图像处理器计算特征量→图像存储器输出数据/判断结果可计算的特征量面积重心长度位置有了这些量化的特征,后续的手势分割与手势分析才有了可计算的输入。座舱中的摄像头通常布置在内后视镜附近或仪表台上方,以获得对驾驶员手部的完整视野。图5-5视觉传感器的工作原理注意:视觉传感器路线最大的短板在于对光线的依赖。逆光、夜间、有色光源都会显著改变图像像素的分布,这正是后续要引入HSV颜色空间与深度学习分割的原因。学习任务5·手势交互系统开发与测试14/59(五)手势交互工作流程和原理图5-7/图5-8手势无论是静态或动态,其识别顺序都是:首先通过摄像头获取RGB原始图像,然后在获取到的图像中进行手势分割,得到手部区域;接着在此基础上进行手势分析,分析手势特征,最后通过识别算法实现手势识别。01图像获取02手势分割03手势分析04手势识别05识别结果流程可再细分七个环节手部检测定位→手势分割→手部特征提取和预处理→手势特征向量参数→参数训练/生成模型→姿态识别→识别结果图5-8手势识别工作流程细分手部检测定位与手势分割一般同时进行,两者统称为「手势检测分割」。图5-7手势识别工作流程细分三项关键技术①手势分割:把手从背景中分离出来②特征提取和选择:把动作变成数字③手势识别:由算法给出语义结果这三项也是本任务第六、七、八节的展开顺序。学习任务5·手势交互系统开发与测试15/59(六)手势分割·目的与方法总览图5-9为什么分割是第一步手势分割是手势识别过程中关键的一步,分割效果直接影响手势分析及最终识别结果。其最终目的是采用一系列分割算法从图像中有效地分割出手部区域,将手势作为前景与背景进行分离。①手部检测定位确定图像中有没有出现手势,并找到手势所在的区域。回答"手在不在、在哪里"②手势分割将手势区域从画面中提取出来,去除干扰背景。回答"哪些像素属于手"③两者同时进行工程上这两部分一般同时进行,统称手势检测分割。合称:手势检测分割1基于肤色的手势分割2基于边缘轮廓的手势分割3基于运动的分割4基于深度学习的分割特征选择决定成败手势本身具有丰富的形变、运动以及纹理特征,选取合理的特征对于手势的识别至关重要。目前常用的手势特征包括:肤色、轮廓、边缘、图像矩、图像特征向量以及区域直方图特征等。基于皮肤颜色的分割方法图5-9手势分割示意学习任务5·手势交互系统开发与测试16/59(六)基于肤色的手势分割RGB颜色空间肤色是手势最基本的特征之一。肤色特征比较固定,跟手势动作无关,肤色检测的运算量较小,适用于快速的手势分割。该方法需要选择合适的颜色空间并建立合适的肤色模型,利用肤色与背景之间的区别完成分割。RGB空间:三个"多少"三个通道分别表示Red(红)、Green(绿)、Blue(蓝)
三种基本颜色。每个像素点的颜色由RGB三个维度的值表示,代表三种颜色成分的多少。举例:黄色(255,255,0)RGB非常适合显示色彩缤纷的彩色图像RGB的三个短板①三个分量都与亮度密切相关,亮度一变三个分量都变,没有更直观的表达方式;②人眼对三种颜色敏感程度不同——对红色最不敏感、蓝色最敏感,因此RGB是均匀性较差的颜色空间;③很难用精确的三个分量数值来表示某一种颜色。结论:适合显示系统,不适合图像处理图5-10RGB三通道基于肤色模型的手势分割工程中必须注意的前提自然环境下获取的图像容易受自然光照、遮挡和阴影的影响,即对亮度比较敏感。实际应用中,基于肤色的分割还会受到光照、光源位置、有色光源、手部弯曲、背景环境等影响,需要结合轮廓、几何特征等其它分割方法一并使用。图5-10RGB三个维度共同决定颜色学习任务5·手势交互系统开发与测试17/59(六)HSV颜色空间图5-11/图5-12在图像处理中使用较多的是HSV颜色空间,它比RGB更接近人们对彩色的感知经验,非常直观地表达颜色的色调、鲜艳程度和明暗程度,方便进行颜色的对比。①色调Hue0°~360°表示色彩信息,即所处的光谱颜色的位置,用角度度量。从红色开始按逆时针方向计算:红0°、黄60°、绿120°、蓝240°。HSV表示黄色只由一个值决定:Hue=60;而RGB需要(255,255,0)三个值。②饱和度Saturation0%~100%饱和度为0表示纯白色。值越大,颜色越饱和,越接近光谱色;反之降低饱和度表示往颜色中添加白色。直观对应"艳不艳"③亮度Value0%~100%竖直方向决定颜色的明暗程度,亮度越高表示颜色越明亮,明度0表示纯黑色。直观对应"亮不亮"图5-11HSV颜色空间图5-12HSV颜色空间中H值的定义方法色调用角度度量,取值范围0°~360°要点:RGB和HSV两种表示颜色的方法可以根据算法互相转化。工程上常把图像从RGB转到HSV,只在H通道上做肤色阈值判定,从而削弱光照变化带来的干扰。学习任务5·手势交互系统开发与测试18/59(六)其它三类分割方法图5-13/图5-14(2)基于边缘轮廓的手势分割对于静态手势识别而言,边缘信息和轮廓信息是比较常用的特征。①建立模型提取指尖的数量和位置②将指尖和掌心连线,用距离公式算指尖到掌心的距离③用反余弦公式算各指尖与掌心连线的夹角④把距离和夹角作为选择的特征(3)基于运动的分割方法实验发现:运动中会产生光影变化,以及背景的动态变化。帧差法:利用相邻图像帧之间的差分判断是否有运动产生背景差分法:先对背景图像建模,再通过比较背景图像与含手势的图像分割出手部区域图5-13边缘轮廓手势分割(4)基于深度学习的手势分割方法传统方法中,特征的提取是靠人工完成的。手工选取特征需要复杂的手势特征先验知识,算法准确性非常依赖工程师的经验,还需要不断调整算法内的参数。深度学习需要机器学习模型和海量训练数据不断迭代、完善算法参数,从而提升准确性与预见性;即便在光照不均匀、复杂背景、类肤色区域影响下,也能完成有效的手部区域提取。图5-14机器学习和深度学习对比深度学习手势检测分割效果方法没有万能:
简单背景用阈值法(取灰度直方图波谷作阈值)效果不错;复杂背景单一阈值则难以奏效;目标与背景灰度差别不大时边缘提取也拿不到明显边缘。工程上应多种方法相结合。学习任务5·手势交互系统开发与测试19/59(七)手势分析(特征提取和分析)三大方法手势分析(特征提取和分析)是完成手势识别系统的关键技术之一。手势的形状和运动轨迹是手势识别中的重要特征,与手势所表达意义有直接的关系。通过手势分析,可获得手势的形状特征或运动轨迹。1)边缘轮廓提取法该法基于手形特有的外形而与其他物体区分。基于几何特征的手势识别算法采用提取关键点的识别算法,向邻域搜索提取出手势图像的边缘,把图像的边缘看成一条曲线,然后对曲线进行处理。2)多特征结合法指尖、掌心位置、手势形状等多特征结合。该法根据手的物理特性分析手势的姿势或轨迹,例如将手势形状和手指指尖特征相结合实现手势的识别。3)指关节式跟踪法用指关节式跟踪法构建手的二维或三维模型,再根据人手关键点的位置变化来进行跟踪。该方法主要应用于动态轨迹跟踪。手势分析的落脚点:把手的外形变成可计算的特征为什么要做"分析"这一层分割只回答"哪些像素是手",还不能告诉系统"这个手势代表什么"。手势分析负责把像素进一步压缩成特征向量——轮廓曲线、指尖坐标、关节角度、运动轨迹,为后续识别提供统一输入。本任务中MediaPipe输出的21个手部关键点坐标,正是这一层的输出结果。学习任务5·手势交互系统开发与测试20/59(八)基于2D/3D摄像头的手势识别图5-15~5-17手势识别是指将模型参数空间里的轨迹或点、线分类到该空间里某个子集的过程。若按照摄像头的种类来分,手势识别可分为两类。①静态手势识别(手形识别)也称静态二维手势识别,识别的是手势中最简单的一类,只能识别出几个静态的手势动作,如握拳或者五指张开。这种技术只能识别手势的"状态",不能感知手势的"持续变化",说到底是一种模式匹配技术。缺点:只能识别预设好的状态,拓展性差②动态手势识别(仍不含深度信息)与二维手形识别相比稍复杂:不仅可以识别手形,还可以识别一些简单的二维手势动作,如对着摄像头挥挥手。它拥有了动态的特征,可以追踪手势的运动,进而识别将手势和手部运动结合在一起的复杂动作。硬件要求与二维手形识别并无区别。代表公司:PointGrab、EyeSight、ExtremeReality③基于3D摄像头的三维手势识别立体视觉利用多个图像采集设备或深度摄像头得到手势的不同图像,再转换成立体模型。立体匹配的方法与单目视觉中的模板匹配方法类似,也要建立大量的手势库;而三维重构则需建立手势的三维模型,计算量将增加,但分割效果较好。代表:微软KinectSDK(Windows3D传感数据识别)图5-15手机触控屏所使用的手势解锁技术图5-16动态手势识别图5-17微软KinectSDK实现3D传感数据识别单目视觉:得到手势的平面模型成本与效果的权衡:2D方案硬件便宜、算法简单,但要建立所有可能手势的数据库,计算量随手势数量迅速膨胀;3D方案精度更高却要承担更高的硬件与算力成本。座舱量产方案多在两者之间折中。学习任务5·手势交互系统开发与测试21/59(八)动态手势识别为什么更难多义性+时空差异性相比于静态手势只需要在分类器的输入处处理单个图像,动态手势需要处理图像序列和更复杂的手势。由于动态手势本身的多义性以及时空差异性,动态手势识别一直是一项极富挑战的课题。识别动态手势的三步01考虑空间关系+时序分析先把手放进图像序列的时间轴上看,而不是只看单帧02确定手势起始与最终位置在时间轴上切出一段完整的动作区间03结合特征点逐帧拆分分析用时序连续图像进行拆分,最终转化成静态手势识别静态手势输入:单张图像处理:手部检测→特征提取→分类器算法:简单,更容易实现2DCNN的典型应用场景动态手势输入:图像序列(视频)处理:起始/结束定位→时序分析→逐帧拆分算法:需同时建模空间与时间HMM/DTW/3DCNN的典型应用场景三维手势识别需要建立手势的三维模型落地结论:在可预见的将来,动态手势识别的准确率肯定会大大提高。但就本任务而言,我们选择从静态手势(数字1~5)入手——它算法简单、更容易实现,且足以驱动刮水器与车窗这类确定性指令。学习任务5·手势交互系统开发与测试22/59(八)常见手势识别方法三大技术路线从手势识别的技术实现来看,常见手势识别方法主要有:模板匹配技术方法、统计分析技术方法、神经网络技术方法。1模板匹配技术方法静态识别中最早提出的识别方法,也是最简单的手势识别技术方法。将输入图像与图像库模板进行比较,并计算相似度再进行分类。速度快、抗光照,但精度不高2统计分析技术方法一种通过统计样本特征向量来确定分类器的基于概率统计理论的分类方法。先从原始数据提取特定特征向量并对其分类,而不是直接对原始数据进行识别。SVM/KNN等分类器3神经网络技术方法这种技术具有自学习能力,能有效抵抗噪声和具有模式推广能力。在识别前需要一个神经网络的训练(学习)阶段,包括机器学习和深度学习人工智能方法。HMM/DTW/2DCNN/3DCNN手势识别与跟踪:从图像到语义的最后一跳技术演进的内在逻辑三条路线并不是互相替代,而是"谁来提取特征"的演进:模板匹配靠人堆模板库,统计分析靠人设计特征+概率分类器,神经网络则让模型自己从数据里学出特征表示。本任务使用的MediaPipeHands属于第三条路线——深度学习姿态识别算法。学习任务5·手势交互系统开发与测试23/59(八)模板匹配技术方法图5-18/图5-19静态识别中最早提出的识别方法为模板匹配法,它将输入图像与图像库模板进行比较,并计算相似度再进行分类。该方法的关键在于手势模板库的构建与输入图像的处理。方法的优势在数据量不大的样本上,识别速度很快,抗光照干扰能力较强。方法的短板识别精度不高。手势本身形变丰富,有限的模板很难覆盖所有角度与尺度变化。模型库的角色图像在比对之前需要与模型库协同:模型库的规模与代表性,直接决定了"能不能比得上"。典型环节:图像二值化处理→凸显图像特征→提取手势特征→模板匹配。手势模板库示例模型匹配示例完整流程(图5-18):输入图像→手势分割→手势区域→图像特征提取→手势特征→识别手势,全过程由模型库提供比对基准;图5-19的静态手势识别流程与此一脉相承。学习任务5·手势交互系统开发与测试24/59(八)统计分析技术方法概率统计理论统计分析技术方法是一种通过统计样本特征向量来确定分类器的、基于概率统计理论的分类方法。这种技术要求人们从原始数据中提取特定的特征向量,需要先对这些特征向量进行分类,而不是直接对原始数据进行识别。典型例子:指尖与重心对于每幅图像提取出指尖和重心特征,然后计算距离和夹角,再对不同的手势分别进行距离和夹角的统计,得到其分布的数字特征。在输入分类器以后,再对采集的手势图像进行分类识别。代表性算法SVM寻找不同类型样本的边界,使各样本到边界的范围最大;泛化错误率低、分类速度快,但只适用于小型样本集、难以解决多分类任务KNN待识别样本的类型由离其最近的K个邻居决定;识别率高,面对多分类问题效果较好,但计算量大、空间开销大图5-19静态手势识别流程与模板匹配的本质区别模板匹配比的是整张图与模板的相似度;统计分析比的则是预先抽出的若干个数(距离、夹角、矩、直方图)落在哪个概率分布里。特征工程做得好,小样本也能有不错的鲁棒性;特征选错,分类器再强也无济于事。工程提示统计分析路线的成败系于特征是否稳定。在座舱这种光照与背景剧烈变化的场景里,单纯依赖距离和夹角很容易受摄像头标定、手部远近的影响。这正是产业界转向深度学习的原因学习任务5·手势交互系统开发与测试25/59(八)机器学习类手势识别算法HMM/DTW与深度学习相比,机器学习方法更加传统:通常使用手工设计的特征提取器(如HOG、SIFT等)来提取手势的特征,即机器学习算法是基于人工特征的;然后将这些特征输入到分类器中进行分类。原始图像/序列→手工特征HOG/SIFT→HMM/DTW建模→识别结果①HMM隐马尔可夫模型通过状态转移的随机过程和观察值输出的过程来确定手势信号,能够对连续时序信号的处理有较好的表现,用于动态手势识别。缺点:训练代价大、复杂度高②DTW动态时间规整通过测量并对比不同长度的两个时间序列的相似度,输出相似度最高的结果作为识别结果。使用时先对训练集中的每个手势预处理,提取特征并规范化为一个序列模板;对待测试的手势做相同预处理,再与训练集模板逐一匹配。优点:可比较不同长度的手势序列,对时间偏移和变形鲁棒性高两者的共同前提无论是HMM还是DTW,都要先把连续动作离散成一串按时间排列的特征向量,再对这段序列建模或匹配。座舱中的现实选择自定义手势样本少、算力预算紧时,人工特征方法更容易快速落地;数据量上来之后,再迁移到深度学习方案。共同底盘:基于人工特征的机器学习算法主要包括隐马尔可夫模型(HMM)和动态时间规整(DTW),二者均主要服务于动态手势场景。学习任务5·手势交互系统开发与测试26/59(八)深度学习类手势识别算法2DCNN/3DCNN基于深度学习的手势识别是目前最流行的方法之一。它通常使用卷积神经网络(CNN)或循环神经网络(RNN)等深度学习模型进行训练,从而学习到手势的特征表示和模式。大规模手势数据集→训练深度学习模型→关键点检测→推断手势语义①2DCNN能够从图像中提取手势的空间特征,对静态手势识别准确率较高。缺点:对输入图像尺寸要求较高,难以处理动态手势的时序信息②3DCNN能够学习图像和手势的时空特征,对动态手势识别准确率较高,适用于复杂手势。缺点:对数据集和计算资源要求较高,需要大量标注视频进行训练卷积与降采样:把图像压成有意义的表示关键点:先有关键点,才有手势手势识别通常需要先进行手势关键点检测,即从图像或视频中检测出手的关键点位置,然后根据这些关键点的空间关系推断出手的姿态信息。训练阶段可使用MSRAction3D、NTURGB+D等数据集训练OpenPose、HandNet等模型。学习任务5·手势交互系统开发与测试27/59(八)基于神经网络的手势识别算法对比表5-1算法优点缺点适用情况HMM对连续时序信号的处理有较好的表现训练代价大、复杂度高动态手势DTW时间偏移和变形鲁棒性高在处理大量数据和复杂手势时效果不理想动态手势2DCNN能够从图像中提取手势的空间特征,对静态手势识别准确率较高,对于从图像中提取空间特征的场景效果较好对输入图像尺寸要求较高,难以处理动态手势的时序信息静态手势3DCNN能够学习图像和手势的时空特征,对动态手势识别准确率较高对数据集和计算资源要求较高,需要大量标注视频进行训练动态手势;能从图像序列中提取时空特征,适用于复杂手势选型口诀:看静态还是动态——静态优先2DCNN;动态则在对时间序列建模的HMM/DTW/3DCNN中按算力与数据量取舍。学习任务5·手势交互系统开发与测试28/59(八)背景知识:深度卷积神经网络图5-20DCNN是DeepConvolutionalNeutralNetworks的缩写,中文名为「深度卷积神经网络」。它是深度学习中一种非常强大的工具,被广泛用于计算机视觉和图像识别处理领域。DCNN通过多层卷积和池化操作,能够有效地提取图像中的特征。(1)卷积层——提取基础特征通过定义一组卷积核(滤波器),对输入图像进行卷积操作,得到一组特征图。使用多个卷积核可提取不同尺寸和方向的特征;通过多层卷积层的堆叠,可以逐渐提取出高级抽象的特征,同时有效捕捉图像的边缘信息和纹理特征。(2)池化层——降采样层能够对卷积层输出的特征图进行降采样,减少特征维度,并具有平移不变性,增强网络的鲁棒性。池化层可以减小特征图的尺寸,并保留主要的特征信息——手部稍微平移一点,依然能被认出来。(3)全连接层——映射到类别DCNN通过全连接层将卷积层和池化层提取的特征映射到目标类别上。全连接层利用这些特征进行分类,得出最终的检测结果。图5-20DCNN的基础架构一句话概括核心思想DCNN作为一种深度学习模型,由多个卷积层、池化层和全连接层组成,核心思想是通过卷积和池化操作来提取图像特征,并通过全连接层完成分类和回归任务。本任务所用的MediaPipeHands正是这类结构的工程化落地形态。学习任务5·手势交互系统开发与测试29/59(八)DCNN在视觉目标检测中的作用五项能力03多尺度适应性通过多层卷积和池化操作,可以在不同尺度的图像上提取特征,并对目标进行准确的定位和分类。04鲁棒性和泛化能力通过大规模数据集的训练学到丰富特征表示,对光照变化、姿态变化和遮挡等问题具有较强鲁棒性。05实时性能由于网络结构的优化和硬件的发展,已取得较快的计算速度,可以实现实时的目标检测。01特征学习能力DCNN通过多层卷积层和池化层的组合,能够自动学习图像的特征表示。这种层级结构有助于提取出数据中的抽象特征,使得网络能够更好地理解图像内容,提高目标检测的准确性。02上下文信息的利用DCNN在特征学习过程中,会包含图像的上下文信息。通过多个卷积层的堆叠,DCNN可以感知更大范围的上下文关系,使得目标检测具备更好的语义理解能力。深度学习模块已成为视觉感知的标准件落到座舱场景:光照会从正午的强光变成夜间的红外补光,手会以任意角度出现在画面任意位置——这正是鲁棒性、多尺度适应性与实时性三项能力必须同时在线的原因。学习任务5·手势交互系统开发与测试30/59(九)手势识别的优缺点四项优点/四项缺点+优点应用简单将日常生活中所获得的手势操作经验,直接运用到手势识别交互活动中。通过手势识别,用户可以用简单的手势控制刮水器、车窗、空调、信息娱乐系统等车辆附件。非接触性手势识别可使用户整个活动都是无触控的。安全性高将手势识别应用到先进驾驶辅助系统中,可在一定程度上提高驾驶的安全性。可扩展性可结合语音识别、智能驾驶对车辆进行控制。−缺点复杂手势识别准确率低只能做一些稍微简单的手势,一些难度稍大的手势存在巨大的困难,识别准确率较低。动态手势识别准确率较低由于算法算力原因,动态手势识别目前识别准确率还有待提高。随着技术的发展,在可预见的将来,动态手势识别的准确率肯定会大大提高。易受环境的影响当前汽车的手势识别功能多基于摄像头,识别准确率容易受到光线及环境的影响。功耗较高手势处理需要高水平的软件算法,从而导致高电量消耗和增加处理器空间的使用。识别五种手指状态后判断当前手势一句话总结手势识别目前还未广泛应用在量产车上,但是已经成为高端商务车和新能源汽车智能座舱的高端配置,彰显汽车品质。因此本任务选择"简单、确定、高成功率的静态手势"作为切入点。学习任务5·手势交互系统开发与测试31/59(十)基于MediaPipe+OpenCV的实现技术选型该技术需要OpenCV进行图像识别,利用MediaPipe机器学习库对手部进行识别追踪,再通过手部21个坐标点的位置计算,实现一个简单的手势识别功能。①MediaPipe库MediaPipe是Google开发的一种跨平台、开源的框架,用于构建实时的、基于机器学习的应用程序。它提供对象检测、人脸检测、关键点检测、手部跟踪、语义分割等算法;这些算法都经过训练,可在移动设备、桌面和服务器上运行,并能实现实时处理。②OpenCV库一个跨平台的计算机视觉库,可提供图像和视频的读取、预处理、特征提取、特征匹配、目标检测等功能。OpenCV用C++编写,但提供Python、Java等语言接口,可方便地在不同平台上使用。广泛应用于工业自动化、安防监控、机器人、医疗诊断、智能交通等领域。MediaPipe+OpenCV协同工作所需模块(四个)①cv2:计算机视觉和机器学习软件库②mediapipe:机器学习视觉算法的工具库③time:时间模块,用于计算帧率④numpy(linalg):用于求范数安装:pipinstallmediapipe/opencv-python/opencv-contrib-python技术路线一句话基于Python+MediaPipe+OpenCV实现手部关键点检测:OpenCV负责把摄像头的每一帧读进来、画出来,MediaPipe负责在这帧图里"找出手并给出21个关节坐标",剩下的手势判别就变成了对坐标的几何计算。开发语言:Python开发系统:Windows10学习任务5·手势交互系统开发与测试32/59(十)MediaPipe功能简介表5-2功能备注人脸检测FaceMesh从图像/视频中重建出人脸的3DMesh人像分离从图像/视频中把人分离出来手势跟踪本任务使用提供21个关键点的3D坐标,应用于手势识别人体3D识别提供33个关键点的3D坐标,应用于姿态识别物体颜色识别可以把头发检测出来,并涂上颜色为什么本任务挑"手势跟踪"MediaPipe的手势跟踪直接给出手部的21个关键点3D坐标,正好覆盖了"手势分析"需要的核心输入,无需自己从零训练模型。人脸FaceMesh与人体33点姿态识别,正是学习任务3(人脸识别)与DMS姿态估计可复用的同类接口。MediaPipe:直接调用API完成目标检测、人脸检测与关键点检测学习任务5·手势交互系统开发与测试33/59(十)手势识别原理:21个关键点图5-21MediaPipe中对应的手势识别函数(solutions.hands)能够实现手势关键点检测,具有非常高的算法准确度。其主要采用深度学习姿态识别算法,可以检测手的21个骨骼关键点。图5-21手势识别21个关键点用代码引用手部模型定义并引用MediaPipe中的hands模块:mp.solutions.hands为手势识别函数,mp.solutions.drawing_utils为自带的绘图工具包。hands=mp.solutions.hands.Hands(...)results=cess(imgRGB)坐标怎么用每个关键点给出x、y、z归一化坐标。把它们按编号连起来就是骨线;比较"指尖到掌心的距离"与"指根到掌心的距离",就能判断这根手指是伸直还是弯曲。MediaPipe是怎么做到的通过对整个图像进行手掌检测后,使用手部关键点模型通过回归对被检测手部区域内的21个三维手部关节坐标进行精确的关键点定位,即直接进行坐标预测。solutions.hands的输出可在画面上叠加绘制手部关键点与连接关系示意学习任务5·手势交互系统开发与测试34/59(十)MediaPipe手势模块:三个模型手势识别原理MediaPipe的手势模块框架由3个模型
依次串联组成:先在整个画面里找到手掌,再定位手上的关节,最后把手势翻译成含义。①BlazePalm手掌识别模型从整幅图像中界定手部轮廓、找到手掌位置,识别手的整体框架和方向,检测平均精度可达95.7%。②Landmark手部关键点模型在已检出的手掌区域内,通过回归直接预测21个三维手部关节坐标,即手部的立体骨架。③GestureRecognition手势识别模型关键点结果出来之后,再把这一组节点分类成一系列手势,输出“数字1~5”“OK”等可被程序使用的手势含义。为什么要拆成三步手掌在画面中只占很小一块,直接全图回归关键点既慢又容易发散。先用手掌检测把搜索范围收敛到手部框内,再在小区域里精确定位关节,精度和实时性才能同时满足座舱量产要求——前两步决定“看得准”,第三步决定“认得对”。学习任务5·手势交互系统开发与测试35/59(十)识别流程①:导入依赖库与打开摄像头图5-22/图5-23手势识别流程的第一步是导入依赖库并打开计算机摄像头进行实时检测,得到连续的视频帧作为后续算法的输入。图5-23实时检测手势cv2.VideoCapture()创建视频对象用于开启摄像头。若使用笔记本计算机自带的摄像头,设备编号参数一般为0;外接摄像头则依次为1、2……ret:摄像头是否调用成功bool类型的判断变量。摄像头成功读取到数据时返回True,没有读到数据时返回False,可用于判断设备状态。frame:读到的视频数据每一帧返回的视频数据都是一个numpy.ndarray格式的三维数组,后续的色道转换、关键点检测都作用在它上面。依赖库导入与摄像头开启(参考)importcv2importmediapipeasmpimportnumpyasnp/importtimecap=cv2.VideoCapture(0)success,img=cap.read()退出循环:Esc键的ASCII码是27cv2.waitKey(delay)表示在给定时间(单位:毫秒)内等待用户按键触发;用户没有按键则继续等待。ifcv2.waitKey(1)&0xFF==27:#按下Esc退出学习任务5·手势交互系统开发与测试36/59(十)识别流程②:函数加载与参数设定图5-24注意为避免这些语句反复进入摄像头的循环,应把绘图函数与识别参数写在while判断语句之前,只初始化一次。图5-24手势识别函数加载与参数设定static_image_mode默认False设为False,把输入当作视频流处理,非常适合视频帧;设为True,则在每张图上重新做手部检测,适合一批静态、可能不相关的图像。max_num_hands默认2要检测的最多的手的数量。座舱场景中驾驶员通常单手操作,可根据实际交互需要调整。min_detection_confidence默认0.5来自手部检测模型的最小置信值,取值0.0到1.0,只有高于它才认为“检测到手了”。min_tracking_confidence默认0.5来自地标跟踪模型的最小置信值;低于阈值时在下一帧自动重新调用手部检测,保证跟踪不丢失。学习任务5·手势交互系统开发与测试37/59(十)识别流程③:色道转换与关键点绘制图5-25~图5-27图5-25BGR转换为RGB图5-26绘制关键点并连线后的窗口图5-27手势关键点为什么要来回转换BGR与RGB在OpenCV中,BGR(蓝绿红)是默认图像格式,而RGB(红绿蓝)是更常用的表示方式。摄像头取到的图像需要先做RGB2BGR,交给MediaPipe处理后还要用BGR2RGB转回来,才能在窗口里正常显示。互换规则:蓝色通道Blue与红色通道Red互换,绿色通道Green保持不变landmark坐标怎么用MediaPipe返回的关键点坐标是归一化值(0到1之间),要乘以图像的宽和高才能得到像素坐标;再把编号相邻的点用drawing_utils连起来,就得到覆盖在手上的骨线。cx,cy=int(lm.x*w),int(lm.y*h)mpDraw.draw_landmarks(img,handLms,mpHands.HAND_CONNECTIONS)学习任务5·手势交互系统开发与测试38/59四、任务准备(1):工具设备介绍设备与工具手势交互系统的开发与测试需要在教学车上验证效果、在智能座舱测试装调台架上编写与调试代码,两者通过联机通讯线互联;作业全程必须穿戴规定的安全防护用品。智能网联/智能座舱教学车手势交互系统的实车载体智能座舱测试装调台架用于手势识别程序的编写与调试摄像头采集驾驶员手势图像的输入装置联机通讯线教学车与台架之间的数据通讯触控笔点击触控屏幕输入指令安全帽头部防护,作业全程佩戴绝缘垫铺于作业区域,隔离高压回路工作手套手部防护,拆卸接线时必戴学习任务5·手势交互系统开发与测试39/59四、任务准备(2):作业前的安全与防护安全要求教学车与台架涉及低压上电、线束拆装与实车操作,作业前必须完成下列三项安全与防护要求,确认无误后方可进入后续步骤。规范着装・设置警示・穿戴防护用品①规范着装入场着装整洁,不佩戴首饰,长发必须挽起并收入工作帽内,避免因衣物或饰物卷入设备造成人身伤害。②设置安全隔离在作业区域放置安全警示牌,并正确设置安全围挡,提示无关人员不得进入作业范围。③穿戴防护用品检查并穿戴工作手套与安全帽;铺设绝缘垫,确认其完好无损、铺设到位。为什么这一步不能省座舱实训同时涉及高压部件、可移动的教学车与精密的计算平台三类风险源。警示隔离保护他人,绝缘垫与手套保护自己,规范着装则防止被机构卷入——任何一项缺失都可能把一次常规实训变成一次事故。作业纪律提醒手势调试时须脱下工作手套以便摄像头采集,调试完成后必须立即戴回手套再进行拆卸作业;任何时候不允许单独一人进行车辆上电操作。高压作业“一人操作、一人监护”学习任务5·手势交互系统开发与测试40/59四、任务准备(3):四项作业前检查工具・线束・台架・车辆①触控笔检查外观结构完整,表面不应有破损、变形、裂痕、生锈等问题;触控笔使用功能正常。②线束外观检查含台架电源线与联机通讯线。外观结构完整、无破损变形裂痕;连接针脚无损坏、变形或生锈。③台架检查检查确认台架220V电源已安全断开;检查万向轮是否已锁止,确保处于锁止状态;检查台架上的设备齐全。④车辆检查绕车一周检查阻车器是否置于车轮前后;安装座椅、地板、方向盘、换档杆四件套;READY上电后确认仪表READY灯点亮且档位处于P档;手刹指示灯点亮,电量充足;最后关闭车辆。检查要点四项检查全部合格才允许上电作业;任一项不合格必须报修或更换后再做。特别提醒:L3级智能网联教学车与智能座舱教学车均须放置两个阻车器,L3车在断电状态下还应保持蓄电池负极断开,检查确认后再恢复连接。学习任务5·手势交互系统开发与测试41/59四、任务准备(4):手势识别系统的线路连接先检查・后连接联机通讯线负责教学车与台架之间的数据通讯。接线前先做两端接线口的外观检查,确认正常后再按规定的拓扑完成连接。检查①:与教学车连接的接线口检查联机通讯线与教学车连接端的接线口是否正常,重点确认针脚无损坏、无变形、无锈蚀。检查②:与台架连接的接线口检查联机通讯线与智能座舱测试装调台架连接端的接线口是否正常,同样确认针脚完好、无锈蚀。连接①:L3车计算平台↔交换机联机通讯线两端分别接入L3车计算平台与交换机连接②:智能座舱教学车↔交换机联机通讯线一端接座舱车,另一端接入交换机连接③:智能座舱测试装调台架↔交换机台架通过联机通讯线接入同一台交换机学习任务5·手势交互系统开发与测试42/59四、任务准备(5):启动设备与互联上电・远程连接L3级智能网联教学车READY上电连接低压蓄电池负极→踩住制动踏板上电→确认手刹指示灯点亮→确认电量充足智能座舱教学车READY上电踩住制动踏板上电→确认手刹处于制动状态→确认车辆电量充足启动台架和电脑连接台架电源线,打开台架电源开关按钮,启动台架电脑Step01运行“智能座舱系统测试软件”,单击“设置”图标,单击“计算平台”,进入远程操作L3级智能网联教学车计算平台的界面。Step02输入IP、Name、Password单击“连接”按钮,连接台架和L3级智能网联教学车Step03输入命令并回车进入L3级智能网联教学车计算平台Step04运行脚本连接两车界面出现“startsuccess”即连接成功,座舱车功能运行正常学习任务5·手势交互系统开发与测试43/59五、任务实施:任务概述任务实施本任务主要基于Python+MediaPipe+OpenCV进行手势识别,在教学车上实现刮水器、车窗的手势控制。1编写程序实现手势识别完成关键点标记与常见手势识别两段代码2手势识别功能调试在台架上进入虚拟环境并运行主程序验证3固件烧入通过SSH把代码文件发送到教学车4手势交互系统测试在中控屏开启手势控制并逐项验证功能子任务121个关键点标记的Python代码开发新建hand_test.py,跑通关键点检测与绘制子任务2常见手势识别Python代码开发新建hand_main.py,实现手势1~5的识别子任务3手势交互系统的固件烧入和测试按规定的手势开启车窗或刮水器开发环境开发语言Python3.8开发系统Windows10第三方库:mediapipe、opencv-python、opencv-contrib-python,联网后由pip自动下载安装。成果验收标准摄像头画面中能稳定识别出21个关键点与骨线;做出规定手势时窗口显示对应含义;烧入后在教学车上能真正控制车窗或刮水器动作。学习任务5·手势交互系统开发与测试44/59子任务1:21个关键点标记・前期准备图5-28任务要求基于MediaPipe+OpenCV实现手势交互系统中,21个关键点标记的Python代码开发。图5-28在PyCharm中创建程序文件hand_test.py①创建程序文件在PyCharm中新建程序文件hand_test.py,所有关键点检测代码都写在这个文件里。②安装第三方库打开PyCharm,在Terminal中输入安装命令;计算机联网后系统会自动下载安装,直到显示安装成功。③准备摄像头计算机须配备摄像头,可采用笔记本计算机或配置了摄像头的多媒体实训室设备。在Terminal中依次执行pipinstallmediapipepipinstallopencv-pythonpipinstallopencv-contrib-python提示:三个库都要装,opencv-contrib-python提供扩展模块。为什么本课程选MediaPipe它是Google开源的跨平台机器学习框架,模型已训练好,可在桌面、服务器甚至移动设备上实时处理;手部21个关键点由官方模型给出,开发者不必自己收集数据集和训练网络,把精力集中在座舱交互逻辑上。学习任务5·手势交互系统开发与测试45/59子任务1:参考代码与运行效果图5-29/图5-30图5-29手势识别系统参考代码程序图5-29手势识别系统参考代码程序(续)图5-30MediaPipe库手势识别21个关键点这段代码做了什么导入cv2与mediapipe→打开摄像头循环读帧→把每帧转成RGB送给cess()→拿到multi_hand_landmarks后用mpDraw把21个关键点与骨线叠加画回画面。若画面无反应:检查VideoCapture参数、摄像头占用与库是否装好学习任务5·手势交互系统开发与测试46/59子任务2(一):任务要求与导入第三方库图5-31任务要求继子任务1后,基于MediaPipe+OpenCV完成手势交互系统的Python代码开发,要求对手势1~5进行识别。图5-31导入第三方库程序前期准备与子任务1相同:确认mediapipe、opencv已安装,摄像头可用;此处新建的程序文件命名为hand_main.py。cv2的角色跨平台计算机视觉库,负责摄像头读取、色道转换、画点画线并显示窗口。mp与np的角色mediapipe提供手部检测模型与绘图工具;numpy负责向量、范数与数组的数学运算。导入第三方库(参考图5-31)importcv2importmediapipeasmpimportnumpyasnpimporttime开发顺序导入库→初始化模型及参数→编写计算手指弯曲程度的函数→编写判断手势的函数→编写识别主程序→编写主检测循环→编写主程序入口→验证程序功能。每个步骤都对应教材中的一幅代码图,边写边对照。学习任务5·手势交互系统开发与测试47/59子任务2(二):初始化模型及参数图5-32步骤2这一步完成两件事:初始化MediaPipe的手部检测模型,以及设置绘制手部关键点和连接线的样式。图5-32初始化模型及参数mpHands加载手部检测模型hands实例化手部检测对象mpDraw绘制手部关键点和连接线的工具handLmsStyle手部关键点绘制样式(红色)handConStyle手部连接线绘制样式(绿色)figure存储手指伸展状态的数组,初始化为全零landmark存储手部关键点坐标的空数组,大小为21×2为什么要写在while之前模型与样式只初始化一次,避免每帧反复加载,保证实时性。学习任务5·手势交互系统开发与测试48/59子任务2(三):计算手指弯曲程度图5-33步骤3编写计算每只手指弯曲程度的程序,把“弯曲/伸直”这种模糊描述变成可以比较大小的数值。图5-33计算手指弯曲程度程序取三个节点:手掌基准点、手指尖点、手指根部点判定规则计算手指根部到掌心的距离(dist1)和手指尖到掌心的距离(dist2)。如果手指尖的距离大于根部距离,返回1表示手指伸展;否则返回0表示手指弯曲。ifdist2比dist1大:return1#手指伸展用距离而不是角度的好处摄像头与手的距离会变,但“指尖离掌心远”这一相对关系始终成立,因此用两段距离相比较好,天然具有尺度不变性,比直接设定阈值更鲁棒。计算长度时使用NumPy的linalg.norm()求向量L2范数即可。大拇指以17号点作为掌心基准进行计算。学习任务5·手势交互系统开发与测试49/59子任务2(四):判断具体手势图5-34步骤4得到五根手指的伸展状态后,把它映射成具体的手势含义,供后续的座舱功能调用。图5-34判断具体手势程序每根手指的屈伸状态最终汇总为一个状态列表判断逻辑检测每个手指的状态信息之后,通过五个手指的组合来判断当前的手势。比如数字1的手势为“食指伸直,其余手指弯曲”,逐个判断每根手指的状态,若五根手指状态均能匹配,则当前手势为数字1。result=[0,1,0,0,0]#左起:拇指到小指,0弯曲/1伸直从数组到字符串根据手指伸展状态的数组result,映射到对应的手势字符串,比如“one”、“two”等。这样座舱端只要收到一个字符串就能执行开窗或开刮水器的动作,不需要关心中间的检测细节。列表长度固定为5,顺序为:拇指、食指、中指、无名指、小指。学习任务5·手势交互系统开发与测试50/59子任务2(五):主程序、检测循环与入口图5-35~图5-37图5-35手势识别主程序图5-36主检测循环程序步骤5手势识别主程序将图像转换为RGB格式并使用MediaPipe处理;检测到手后绘制手部关键点和连接线;遍历手指调用finger_stretch_detect判断每根手指是否伸展;再调用detect_hands_gesture识别手势并显示结果。步骤6主检测循环打开摄像头,循环读取帧并进行手势检测;把处理后的帧显示出来,直到用户按下q键退出。步骤7主程序入口编写主程序入口(图5-37),运行detect函数,启动整个手势识别系统。主程序入口(图5-37)if__name__=="__main__":
detect()加上这层判断后,文件既可以被直接运行,也可以被其他模块安全地导入复用,是Python工程中的标准写法。学习任务5·手势交互系统开发与测试51/59子任务2(六):验证程序功能图5-38~图5-43步骤8把各段函数按调用关系拼成完整代码程序(图5-38)并运行,逐一验证手势1~5能否被正确识别。图5-38完整代码程序图5-38完整代码程序(续)图5-39手势识别1图5-40手势识别2图5-41手势识别3图5-42手势识别4图5-43手势识别5学习任务5·手势交互系统开发与测试52/59子任务3(一):台架上的功能调试任务工单・步骤1~5任务要求基于Python编写代码,实现座舱手势交互识别功能:驾驶员做出规定的手势时,可以开启车窗或刮水器。1)设备准备同语音交互系统的调试要求2)工具准备同语音交互系统的调试要求3)教学车检查同语音交互系统的调试要求4)互联教学车和台架互联,同上步骤1起动车辆踩住制动踏板给车辆上电;车辆READY上电,仪表READY灯点亮,且档位处于P档。步骤2启动台架和计算机连接台架电源线,打开电源开关,启动台架计算机并登录。步骤3打开代码文件在桌面/E300/task2文件夹中右键单击手势交互系统代码文件,用VisualStudioCode打开,进入代码编写界面。步骤4编写并保存代码按要求编写代码;完成后按Ctrl+S键保存,然后关闭文件。步骤5在台架上进行功能调试(1)打开台架计算机上的AnacondaPrompt软件condaactivatemediapipeCdC:\Users\Dell\Desktop\E300\task2PythonhandMain.py(2)运行后弹出摄像头录制的实时画面;将手放在摄像头前做出相应手势,软件窗口捕捉到手势及关节并显示手势含义,说明台架调试成功。(3)调试时需脱下工作手套,调试完成后必须戴回工作手套;按q键(需切换为英文输入法)关闭AnacondaPrompt。学习任务5·手势交互系统开发与测试53/59子任务3(二):教学车上的固件烧入任务工单・步骤6(1)在车辆上安装摄像头具体做法见摄像头的拆装与标定。可先关闭计算机和台架,把台架上的摄像头拆卸下来,再安装到车辆上。(2)打开测试软件并进入SSH在“智能座舱系统测试软件”上单击“设置”图标,再单击SSH进入程序迁移界面。(3)设置并连接网络IP输入02,Name输入e300,Password输入小写root,单击“连接”按钮连接台架和车辆。(4)发送代码文件单击“选择文件”,选择config.json与手势识别代码文件handMain.py(路径均为桌面/E300/task2,可同时选择全部文件),再单击“发送任务二文件”。烧入成功的判据发送成功后窗口会显示“发送成功”。若长时间无响应或提示失败,应先检查IP、Name、Password是否输入正确、教学车与台架是否处于同一局域网,以及摄像头是否已安装到位;确认无误后重新发送。学习任务5·手势交互系统开发与测试54/59子任务3(三):教学车上的功能测试任务工单・步骤7固件烧入完成后,在车辆中控屏上开启手势控制,用规定手势依次验证刮水器与车窗是否能被正确控制。(1)进入系统设置在车辆中控屏左下角单击小车图标,再单击“系统设置”。(2)开启手势控制在车辆中控屏上单击“开启手势控制”,系统进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- BIM技术应用计划书
- 安检资格证考试题目及答案
- 基于家校合作的高中生生涯课程体系建立及有效性验证
- T/CI 578-2024Micro LED激光转移设备技术要求
- T/UNP 533-2024铝基覆铜板热阻测试方法
- 2025-2026学年高中教案网站制作
- T/CPIA 0068-2024适用于钙钛矿光伏器件的太阳模拟器性能要求
- 自动超声波奶酪切割机全球前十强生产商排名及市场份额(by QYResearch)
- 2026年青海省格尔木市高二历史下册期末考试真题附完整答案【易错题】
- 2025年黑龙江省宁安市高二历史下册期末考试考试卷附参考答案(B卷)
- 四川省环境政策研究与规划院2026年下半年公开招聘工作人员笔试参考题库及答案详解
- CSCO肝癌诊疗指南(2026版)
- 2026年全国高中数学联合竞赛一试(A卷)试卷及参考答案
- 2026年广东省公务员考试(行政执法专业和申论)综合练习题及答案
- JL树木伐移项目监理规划
- 人教版六年级上册数学第一单元《分数乘法》测试卷及一套答案
- 幼儿园成长档案模板(40张)课件
- 小学生民族团结教育知识
- 《职场实用英语课件》
- 梁静茹《情歌》简谱
- NB/T 10728-2021煤矿膏体充填留巷开采技术规范
评论
0/150
提交评论