博主介绍:✌ 专注于VUE,小程序,安卓,Java,python,物联网专业, 从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。
一、研究目的
本研究旨在构建一种基于MediaPipe框架的手势控制演示系统,以实现对计算机界面和智能设备的自然交互。当前,手势识别技术已广泛应用于虚拟现实、游戏娱乐以及辅助交互等领域,但多数现有方案依赖昂贵的深度相机或预先标注的大规模数据集,导致部署成本高昂且对环境光照及背景复杂度敏感。MediaPipe作为一种轻量级、跨平台的实时姿态与手部关键点检测工具,具备高精度、低延迟和易于集成的优势,可在普通摄像头上实现稳定的手势识别,为解决上述局限提供了技术基础。通过对MediaPipe关键点输出进行特征提取与分类模型训练,本研究计划实现对常见手势(如指挥、抓取、旋转等)的实时检测,并将识别结果映射为多模态控制指令,支持文本输入、图形绘制及语音合成等多种交互方式。研究的核心目标包括:①验证MediaPipe在不同光照与背景条件下的鲁棒性;②设计并优化轻量级分类网络,以满足低功耗设备的实时推理需求;③构建完整的软件演示平台,展示手势控制在教育、医疗与工业自动化等场景中的可行性。预期通过实验评估,本系统将显著降低手势交互的硬件门槛,并提升用户体验的自然度与响应速度,为后续基于视觉的交互研究提供可复用的技术框架。综上所述,本研究旨在通过MediaPipe实现一种高效、低成本且易于部署的手势控制演示系统,推动人机交互技术向更广泛的应用领域扩展。
二、研究意义
本研究的意义主要体现在技术创新、应用推广与社会价值三方面。首先,利用MediaPipe实现低成本、低延迟的手势识别,为传统需要昂贵深度摄像头或大规模标注数据的系统提供了可行替代方案,从而降低了技术门槛,促进了人机交互技术的普及与落地。其次,本系统通过在普通摄像头上实现高精度手势检测,能够在光照变化、背景复杂等非理想环境下保持稳定性能,为移动设备、嵌入式平台以及工业现场等多种场景提供了可靠的交互接口,具有显著的实用价值。再次,研究中对MediaPipe关键点输出进行特征提取与轻量级分类网络的优化,不仅提升了模型推理速度,也为后续在边缘计算环境中的应用奠定了技术基础,为学术界提供了一套可复现、可扩展的实验框架。最后,从社会层面来看,基于手势控制的交互方式能够显著改善残障人士与数字设备之间的沟通效率,提升其生活质量;在教育领域,该技术可以为学习者提供沉浸式、直观的交互体验,激发学习兴趣;在工业自动化中,手势控制可实现无接触操作,降低污染风险并提高工作安全性。综上所述,本研究不仅填补了低成本手势识别技术的空白,还为多领域应用提供了可行路径,对推动人机交互技术的进一步发展具有重要意义。
三、国内外研究现状
国内外对手势识别技术的研究已形成多条互补的发展脉络,主要可归纳为基于深度摄像机的三维姿态估计、基于RGB图像的关键点检测与特征提取、以及轻量级模型在边缘设备上的实时推理等方向。早期研究多依赖结构光或时间飞行相机实现手部三维重建,借助点云聚类与几何约束完成手势分类,然而高昂的硬件成本与对光照敏感的局限性限制了其在消费级产品中的应用。随后,随着卷积神经网络的兴起,研究者提出基于RGB图像的手部关键点检测方法,如使用多尺度特征金字塔与全卷积网络实现精准关键点定位,并通过时序模型(如长短期记忆网络)捕捉手势动态信息,显著提升了识别精度。近年来,MediaPipe等跨平台框架的出现,使得在普通摄像头上即可实现高帧率、低延迟的手部关键点检测,为移动端与嵌入式系统提供了可行方案。国内方面,清华大学、北京大学等高校围绕手势交互与增强现实开展多项研究,提出基于深度学习的手势分类网络,并将其集成到智能教学、医疗康复等场景中,取得了较高的识别准确率与实时性能。与此同时,中国科学院计算技术研究所关注隐私保护与多模态融合,研发了基于图像和音频联合识别的手势控制系统,在保证用户数据安全的前提下实现了更为丰富的交互方式。国际上,美国麻省理工学院、斯坦福大学等研究机构则聚焦于大规模数据集构建与跨域迁移学习,发布了公开可用的手势识别基准,如HandNet、EgoHands等,为算法评估提供了统一标准。欧洲多所高校则侧重于轻量化模型设计与硬件加速,利用深度可分离卷积、知识蒸馏等技术,将手势识别模型压缩至数百KB,同时保持超过90%的准确率。总体而言,当前研究方向主要集中在提升识别鲁棒性、降低对硬件的依赖、实现多模态融合以及保障用户隐私等方面。国内外学术界已取得显著进展,但仍面临光照变化、遮挡干扰以及不同人群手势差异等挑战,亟需在算法泛化与系统集成层面开展更深入的探索。
四、预期达到目标及解决的关键问题
预期目标在于构建一套完整、可复现的基于MediaPipe的手势控制演示系统,并通过系统化实验验证其在不同环境与设备上的性能。首先,本研究将实现对常见手势(如抓取、旋转、滑动、指挥等)的实时检测与分类,期望识别准确率达到九十%以上,并将推理时延控制在十毫秒以内,以满足交互式应用的即时反馈需求。其次,系统需兼容多种摄像设备,包括标准网络摄像头、移动终端前置摄像头以及工业级工业相机,从而验证其跨平台适应性。再次,研究将针对光照变化、背景复杂度以及手部遮挡等实际场景进行鲁棒性评估,并通过数据增强与模型正则化提升泛化能力。最后,本系统将提供友好的用户交互界面,支持文本输入、图形绘制及语音合成等多模态输出,以展示手势控制在教育、医疗与工业自动化等领域的应用潜力。
在实现上述目标的过程中,关键问题主要集中于算法效率、模型压缩与系统集成三方面。首先,MediaPipe关键点检测虽已具备高精度,但其后续特征提取与分类仍需在保持低延迟的前提下提升识别准确率;为此,本研究将探索轻量级卷积网络与时序模型的混合架构,并通过知识蒸馏等技术实现模型压缩。其次,系统需要在不同硬件平台上保持一致的性能表现,尤其是在资源受限的边缘设备上;因此,将评估GPU、CPU以及专用AI芯片上的推理速度与功耗,并针对性地进行量化与剪枝优化。再次,手势识别往往受到背景干扰与遮挡影响,本研究将构建多样化的数据集,并引入自监督学习与对抗训练方法,以提升模型对复杂场景的适应性。最后,系统集成层面需解决MediaPipe输出与后端控制指令之间的映射关系,保证指令准确性与实时性;为此,将设计统一的事件调度框架,并通过多线程或异步机制降低耦合度。
综上所述,本研究的预期目标是实现一套高精度、低延迟、跨平台兼容的手势控制演示系统,并通过系统化实验验证其在实际应用中的可行性。关键问题则围绕模型压缩与优化、硬件适配与功耗管理以及鲁棒性提升展开,旨在为后续基于视觉的交互技术提供可复制、可扩展的技术路径。
五、研究内容
本研究的整体内容围绕构建一套基于MediaPipe框架的实时手势控制演示系统展开,涵盖系统架构设计、数据采集与预处理、特征提取与分类模型构建、推理优化以及实验评估等关键环节。首先,系统采用模块化设计,将MediaPipe手部关键点检测器、特征编码器、轻量级分类网络以及交互指令映射层分离,以实现高内聚低耦合的架构;在此基础上,系统通过统一的事件调度框架将检测结果实时传递给后端控制模块,从而支持多种交互方式的即时响应。其次,为了保证模型在不同光照与背景条件下具备鲁棒性,本研究从公开手势数据集和自建实验数据集中采集了包含多姿态、遮挡以及动态背景的RGB视频序列,并对关键点坐标进行归一化、平滑滤波与时序补全,以消除噪声并提升后续特征提取的稳定性。随后,特征提取层采用基于卷积神经网络的多尺度金字塔结构,对归一化后的关键点坐标及其相对位置信息进行编码,并将时序信息通过双向长短期记忆网络进一步建模,以捕捉手势的动态演变;分类层则采用深度可分离卷积与全连接层相结合的轻量级网络,配合知识蒸馏与剪枝技术实现模型压缩,确保在CPU或低功耗GPU上实现毫秒级推理。为进一步降低推理延迟并适配边缘设备,本研究对模型进行量化处理,并利用硬件加速库(如TensorRT、ONNX Runtime)进行部署;同时,在多线程与异步I/O框架下实现关键点检测与分类推理的并行执行,以最大限度减少总时延。实验评估方面,系统将在桌面PC、移动终端以及工业相机三类硬件平台上进行交叉验证,采用准确率、召回率、F1值以及平均推理时延等指标衡量性能;同时,在不同光照强度、背景复杂度与遮挡程度下进行鲁棒性测试,并与现有基于深度摄像机的手势识别系统进行对比。为验证系统的实际应用价值,本研究将其集成到文本输入、图形绘制及语音合成等多模态交互场景中,构建演示案例并收集用户体验反馈;通过对交互延迟与误识率的统计分析,进一步优化指令映射逻辑与错误恢复机制。最后,在讨论环节将总结系统在硬件资源受限、遮挡严重以及多手势共存场景下的局限性,并提出基于自监督学习、对抗训练以及多模态融合的改进方向,以期为后续研究提供可行的技术路线。
六、需求分析
用户需求方面,本研究的目标用户群体主要包括普通消费者、教育工作者、医疗康复专业人员以及工业自动化工程师。消费者期望通过手势实现对智能手机、平板电脑或家用娱乐设备的自然交互,要求系统能够在日常光照环境下保持高识别准确率,并且不需要额外的昂贵硬件;教育工作者则希望借助手势控制为学生提供沉浸式学习体验,系统需支持多种教学场景并具备易于使用的交互界面;医疗康复专业人员关注的是通过手势训练帮助患者恢复运动功能,系统应能够记录和分析手势轨迹,并提供可视化反馈;工业自动化工程师则需要在生产线或仓储环境中使用无接触手势控制设备,系统必须具备在强光、尘埃或遮挡条件下的鲁棒性,并且能够与现有工业控制系统无缝集成。综上所述,用户需求强调低成本、跨平台兼容、实时响应、高准确率以及安全隐私保护等方面。
功能需求方面,系统需实现以下关键功能:首先,利用MediaPipe框架对摄像头捕获的RGB图像进行手部关键点检测,并将检测结果实时输出;其次,构建轻量级手势分类网络,对关键点序列进行特征提取与时序建模,实现对预定义手势集合(如抓取、旋转、滑动、指挥等)的准确识别,识别准确率需达到九十%以上且推理时延控制在三十毫秒以内;再次,设计指令映射模块,将识别结果转换为可执行的交互指令,支持文本输入、图形绘制及语音合成等多模态输出;随后,提供用户界面模块,包括手势校准、实时反馈显示、错误提示与纠正机制,以提升用户体验;此外,系统需具备跨平台部署能力,支持桌面PC、移动终端以及工业相机等多种硬件环境,并通过模型量化与剪枝技术实现低功耗推理;最后,为保障数据安全与用户隐私,系统应在本地完成所有计算并提供可选的加密存储与传输方案。
七、可行性分析
经济可行性方面,本研究所采用的MediaPipe框架为开源且跨平台,能够在普通网络摄像头或移动终端前置摄像头上实现高精度手势检测,从而大幅降低硬件投入成本;此外,轻量级分类网络通过模型压缩与量化技术,可在CPU或低功耗GPU上完成毫秒级推理,进一步降低对专业硬件的依赖;在商业模式层面,系统可通过订阅服务、定制化插件以及与教育、医疗、工业控制软件的集成实现多元化收入来源;同时,开源社区的活跃度为持续维护与迭代提供了技术支持与成本共享机制,整体项目的经济可行性具备较高保障。
社会可行性方面,该系统能够满足残障人士对无接触交互的需求,提高其日常生活与工作中的自主性;在教育领域,手势控制可为学生提供沉浸式学习体验,提升课堂参与度与学习效果;医疗康复场景中,通过手势轨迹记录与实时反馈,可辅助医生制定个性化训练方案并监测康复进展;工业自动化方面,无接触手势操作有助于降低设备污染风险并提高作业安全性;此外,系统采用本地推理与数据加密机制,能够在满足隐私保护法规的前提下获得用户信任,社会接受度较高。
技术可行性方面,MediaPipe已在多平台(Android、iOS、Windows、Linux)上验证其稳定性与实时性能,能够为本研究提供成熟的关键点检测基础;轻量级网络通过深度可分离卷积与双向LSTM实现时序特征建模,模型参数量可控制在数十万级,适合嵌入式部署;利用现有公开手势数据集(如HandNet、EgoHands)与自建多样化采集数据,可构建覆盖不同光照、背景与遮挡情况的训练集,提升模型泛化能力;在推理优化方面,通过TensorRT或ONNX Runtime等加速库实现量化模型的高效执行,确保在低功耗设备上满足实时交互需求;综上所述,技术路径成熟、实现难度可控,技术可行性得到充分验证。
八、功能分析
系统功能模块可划分为七大核心组成部分,分别为输入捕获模块、手部关键点检测模块、预处理与特征编码模块、手势分类模块、指令映射与执行模块、用户交互反馈模块以及部署与优化管理模块。输入捕获模块负责从多种摄像设备(网络摄像头、移动终端前置摄像头及工业相机)实时获取RGB图像流,并对图像进行尺寸归一化与帧率控制,以满足后续处理的时延要求;手部关键点检测模块采用MediaPipe框架实现双手姿态估计,输出21个关键点坐标及其置信度,支持多尺度特征金字塔以提升在不同光照与背景条件下的鲁棒性;预处理与特征编码模块对检测到的关键点进行归一化、平滑滤波与相对位姿计算,将空间坐标映射为时序特征向量,并通过卷积层提取局部几何信息,随后利用双向长短期记忆网络捕捉手势动态演变;手势分类模块接收编码后的特征向量,使用轻量级深度可分离卷积与全连接层组合的网络进行分类,输出手势类别及置信度;指令映射与执行模块根据分类结果调用预定义的交互指令集,将手势映射为文本输入、图形绘制或语音合成等多模态操作,并通过事件调度器将指令异步发送至目标应用程序;用户交互反馈模块负责在界面上实时展示检测结果、识别置信度及执行状态,提供错误提示与校准引导,支持多语言与无障碍显示;部署与优化管理模块聚焦于模型量化、剪枝以及硬件加速库(如TensorRT、ONNX Runtime)的集成,实现跨平台低功耗推理,并通过配置文件动态切换设备适配策略;上述模块通过统一的事件总线实现解耦,保证系统整体的可维护性与可扩展性。
九、数据库设计
表:User
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
user_id | 用户编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
username | 用户名 | 50 | VARCHAR(50) NOT NULL UNIQUE | None | 唯一标识用户
password_hash | 密码哈希值 | 255 | VARCHAR(255) NOT NULL | None | 存储加密后密码
email | 邮箱地址 | 100 | VARCHAR(100) UNIQUE | None | 用于账户验证与通知
created_at | 创建时间 | 19 | DATETIME DEFAULT CURRENT_TIMESTAMP | None | 记录账号创建时间
表:Device
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
device_id | 设备编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
user_id | 所属用户编号 | 10 | INT UNSIGNED NOT NULL | FK(User.user_id) | 外键,关联用户表
device_type | 设备类型(摄像头、终端等) | 20 | VARCHAR(20) NOT NULL | None | 设备分类
model_name | 型号名称 | 50 | VARCHAR(50) | None | 设备型号信息
last_seen | 最后在线时间 | 19 | DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | None | 用于监控设备状态
表:Gesture
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
gesture_id | 手势编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
gesture_name | 手势名称(抓取、旋转等) | 50 | VARCHAR(50) NOT NULL UNIQUE | None | 手势标识
description | 手势描述 | 200 | VARCHAR(200) | None | 对手势的文字说明
表:GestureSample
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
sample_id | 样本编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
gesture_id | 所属手势编号 | 10 | INT UNSIGNED NOT NULL | FK(Gesture.gesture_id) | 外键,关联手势表
user_id | 提交用户编号(可选) | 10 | INT UNSIGNED | FK(User.user_id) | 外键,关联用户表
capture_time | 捕获时间 | 19 | DATETIME DEFAULT CURRENT_TIMESTAMP | None | 样本采集时间
表:KeypointData
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
keypoint_id | 关键点编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
sample_id | 所属样本编号 | 10 | INT UNSIGNED NOT NULL | FK(GestureSample.sample_id) | 外键,关联样本表
frame_number | 帧序号(若视频采集) | 10 | INT UNSIGNED NOT NULL | None | 表示关键点所在帧
x_coord | X 坐标值(相对归一化) | 8 | FLOAT NOT NULL | None | 关键点坐标
y_coord | Y 坐标值(相对归一化) | 8 | FLOAT NOT NULL | None
z_coord | Z 坐标值(可选,若使用深度信息) | 8 | FLOAT | None
表:InteractionCommand
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
command_id | 指令编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
gesture_id | 对应手势编号 | 10 | INT UNSIGNED NOT NULL | FK(Gesture.gesture_id) | 外键,关联手势表
command_type | 指令类型(文本、绘图、语音等) | 20 | VARCHAR(20) NOT NULL | None
payload | 指令内容或参数(JSON 字符串) | 500 | VARCHAR(500) NOT NULL | None
表:SessionLog
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
session_id | 会话编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
user_id | 用户编号 | 10 | INT UNSIGNED NOT NULL | FK(User.user_id) | 外键,关联用户表
device_id | 设备编号 | 10 | INT UNSIGNED NOT NULL | FK(Device.device_id) | 外键,关联设备表
start_time | 会话开始时间 | 19 | DATETIME DEFAULT CURRENT_TIMESTAMP | None
end_time | 会话结束时间(可空) | 19 | DATETIME NULL | None
表:InteractionRecord
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
record_id | 记录编号 | 10 | INT UNSIGNED AUTO_INCREMENT | PK | 主键,自增
session_id | 所属会话编号 | 10 | INT UNSIGNED NOT NULL | FK(SessionLog.session_id) | 外键,关联会话表
timestamp | 事件时间戳(毫秒级) | 19 | DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | None
gesture_id | 检测到的手势编号(可空) | 10 | INT UNSIGNED NULL | FK(Gesture.gesture_id) | 外键,关联手势表
command_executed | 执行的指令编号(可空) | 10 | INT UNSIGNED NULL | FK(InteractionCommand.command_id) | 外键,关联指令表
status | 事件状态(成功、失败、误识别等) | 20 | VARCHAR(20) NOT NULL DEFAULT 'success' | None
上述表结构遵循第三范式,避免了数据冗余与更新异常。每个表均通过主键唯一标识,并在需要关联的字段上设置外键约束,以保证数据完整性。字段类型与长度均根据实际存储需求进行合理分配,确保系统在高并发下仍能保持稳定性能。
十、建表语句
CREATE TABLE User (
user_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE Device (
device_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id INT UNSIGNED NOT NULL,
device_type VARCHAR(20) NOT NULL,
model_name VARCHAR(50),
last_seen DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_device_user FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE Gesture (
gesture_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
gesture_name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(200)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE GestureSample (
sample_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
gesture_id INT UNSIGNED NOT NULL,
user_id INT UNSIGNED,
capture_time DATETIME DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_gesture_sample_gesture FOREIGN KEY (gesture_id) REFERENCES Gesture(gesture_id),
CONSTRAINT fk_gesture_sample_user FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE KeypointData (
keypoint_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
sample_id INT UNSIGNED NOT NULL,
frame_number INT UNSIGNED NOT NULL,
x_coord FLOAT NOT NULL,
y_coord FLOAT NOT NULL,
z_coord FLOAT,
CONSTRAINT fk_keypoint_sample FOREIGN KEY (sample_id) REFERENCES GestureSample(sample_id),
INDEX idx_keypoint_sample_frame (sample_id, frame_number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE InteractionCommand (
command_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
gesture_id INT UNSIGNED NOT NULL,
command_type VARCHAR(20) NOT NULL,
payload VARCHAR(500) NOT NULL,
CONSTRAINT fk_command_gesture FOREIGN KEY (gesture_id) REFERENCES Gesture(gesture_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE SessionLog (
session_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id INT UNSIGNED NOT NULL,
device_id INT UNSIGNED NOT NULL,
start_time DATETIME DEFAULT CURRENT_TIMESTAMP,
end_time DATETIME NULL,
CONSTRAINT fk_session_user FOREIGN KEY (user_id) REFERENCES User(user_id),
CONSTRAINT fk_session_device FOREIGN KEY (device_id) REFERENCES Device(device_id),
INDEX idx_session_user (user_id),
INDEX idx_session_device (device_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE InteractionRecord (
record_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
session_id INT UNSIGNED NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
gesture_id INT UNSIGNED,
command_executed INT UNSIGNED,
status VARCHAR(20) NOT NULL DEFAULT 'success',
CONSTRAINT fk_record_session FOREIGN KEY (session_id) REFERENCES SessionLog(session_id),
CONSTRAINT fk_record_gesture FOREIGN KEY (gesture_id) REFERENCES Gesture(gesture_id),
CONSTRAINT fk_record_command FOREIGN KEY (command_executed) REFERENCES InteractionCommand(command_id),
INDEX idx_record_session (session_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方👇🏻获取联系方式👇🏻