资讯动态

基于 Python 的人脸情感识别与可视化分析系统——机器学习人脸情感分析可视化大屏

发布时间:2026/8/31 21:28:49 来源:尧图企业网站定制
机器学习人脸情感分析可视化大屏基于Python的人脸情感识别与可视化分析系统。采用PyQt5桌面界面、OpenCV人脸检测、scikit-learn机器学习分类并结合Three.js三维人脸情绪模型与ECharts多类型图表实现从图片上传、情感识别、结果展示到日志归档的完整闭环。一、项目简介本程序面向人脸情感分析场景支持对上传图片中的人脸进行检测与情绪分类识别结果包括英文标识中文含义happy喜开心angry怒愤怒sad哀悲伤fear惧恐惧surprise惊惊讶disgust厌厌恶neutral中性识别完成后系统会在图片上绘制人脸框并用大号中文标注情绪种类与概率在主页 3D 场景中高亮对应情绪人脸模型在右侧面板展示准确率、召回率、精确率、F1、置信度等指标及图表将识别前/后图片、操作日志、参数快照按日期归档并写入 SQLite。二、功能说明2.1 主页情感三维分类可视化3D 情绪人脸模型七种情绪对应不同表情的三维人脸支持鼠标拖拽旋转、滚轮缩放、右键平移点击模型有粒子特效并显示数据。图片上传点击「上传图片分析」或将图片拖拽到预览区。多格式支持PNG、JPG/JPEG、BMP、WebP、TIFF、GIF、ICO、PPM 等OpenCV 无法解码时自动回退 Pillow。识别框标注显示完整情绪名称 简称与概率如喜 (开心)/喜 92.3%字号随人脸框自适应放大。右侧数据面板准确率、召回率、精确率、F1、置信度、人脸数、识别内容、概率分布、ECharts 分析图。分析模式默认仅用当前结果可勾选「结合历史记录进行分析」。操作按钮上传图片分析选择本地图片并分析刷新按最新参数对当前图片重新分析并刷新 3D/图表重置清空预览、指标、概率与 3D 高亮重置视角仅重置 3D 相机视角2.2 日志页按日期筛选操作日志时间、级别、页面、操作、详情。识别前照片与识别后照片分栏展示与预览。可打开图片目录 / 日志目录。2.3 图表页支持多种 ECharts 样式多选或随机组合例如渐变堆叠面积图带背景色的柱状图柱状图标签旋转嵌套环形图饼图纹理数据聚合聚合过程可视化漏斗线性回归echarts-stat 统计插件单轴散点图AQI 雷达图数据聚合盒须图同样支持「仅当前结果 / 结合历史」两种分析模式。2.4 参数页情绪权重0.103.00喜/怒/哀/惧/惊/厌/中性权重越大越容易判为主类。模型分析参数置信度阈值、概率温度、主脸融合权重、人脸外扩比例、标注字体倍率、默认情绪。人脸检测参数scaleFactor、minNeighbors、最小尺寸、CLAHE、备用级联。其它界面字体大小、图表刷新间隔。保存后写入config/settings.json、SQLite并按日期生成参数快照。2.5 管理页分析记录、参数、按日期文件目录浏览。统计总数、平均置信度/准确率、情感分布。快捷打开图片 / 日志 / 数据库目录。2.6 配置页配置日志目录、图片目录、SQLite 路径、模型目录、窗口标题。2.7 样式页调节页面背景、导航栏、文字/按钮样式。图表背景与白色雾气强度。3D 深色背景与景深雾效。字体族、大小、加粗/斜体按钮高度/内边距/圆角/颜色。三、使用方式3.1 环境要求操作系统Windows 10/11亦兼容主流 Linux / macOSPython3.8推荐 3.103.12能访问外网首次加载 Three.js / ECharts CDN内网需改为本地静态资源3.2 安装依赖在项目根目录执行pip install -r requirements.txt主要依赖见requirements.txt包名用途PyQt5桌面 GUI 框架PyQtWebEngine嵌入 3D / ECharts 网页视图opencv-python人脸检测、图像处理、标注绘制scikit-learn情感分类机器学习模型numpy / pandas数值与表格数据处理Pillow多格式读图、中文大号标注joblib模型持久化matplotlib / PyOpenGL辅助可视化能力3.3 启动程序py -3 main.py或python main.py程序启动后窗口会按屏幕可用区域自适应大小可用鼠标拖拽边缘缩放。四、操作流程启动程序 │ ▼ 【主页】上传或拖入人脸图片 │ ▼ OpenCV 检测人脸 → 提取特征 → scikit-learn 分类 │ ▼ 绘制识别框情绪 概率 高亮 3D 对应情绪人脸 右侧展示指标与图表 │ ├─ 可选在「参数」页调整情绪权重 / 检测参数 → 点「刷新」重新分析 ├─ 可选在「样式」页调整界面 / 图表雾气 / 3D 背景 ├─ 到「图表」页查看更多 ECharts 组合分析 ├─ 到「日志」页查看操作记录与识别前/后照片 └─ 到「管理 / 配置」页查看归档数据或修改存储路径推荐首次体验步骤运行py -3 main.py。在主页点击「上传图片分析」或把照片拖到虚线预览框。查看方框标注、右侧指标、3D 高亮人脸。打开「参数」页调节某情绪权重后保存回到主页点「刷新」对比结果。打开「日志」页分别查看识别前 / 识别后图片。打开「图表」页勾选图表类型或点「随机组合图表」。五、技术架构5.1 总体架构┌─────────────────────────────────────────────┐ │ main.py 入口 │ │ QApplication MainWindow │ └─────────────────────┬───────────────────────┘ │ ┌────────────────┼────────────────┐ ▼ ▼ ▼ ui/pages ui/widgets core/ 各业务页面 3D/ECharts组件 配置/DB/日志/分析 │ │ │ └────────┬───────┴────────┬───────┘ ▼ ▼ resources/html/ config/ data/ Three.js / ECharts 设置、模型、日志、图片、SQLite5.2 基础框架层次技术说明应用框架PyQt5主窗口、导航、页面切换、表格/表单/拖拽Web 嵌入Qt WebEngine QWebChannel承载 Three.js / ECharts与 Python 通信计算机视觉OpenCVHaar 级联人脸检测、CLAHE、NMS、图像编解码机器学习scikit-learnExtraTrees 情感分类 StandardScaler图像增强Pillow多格式读取、中文大号文字绘制数据存储SQLite JSON 文件系统业务数据、配置、按日归档前端可视化Three.js r1283D 情绪人脸、轨道控制、粒子特效图表ECharts 5 echarts-stat多类型统计图表与线性回归5.3 目录结构python11/ ├── main.py # 程序入口 ├── requirements.txt # 依赖列表 ├── README.md # 说明文档本文件 ├── config/ │ └── settings.json # 全局配置路径、检测参数、情绪权重、主题等 ├── core/ │ ├── config_manager.py # 配置读写与目录保证 │ ├── database.py # SQLite 访问层 │ ├── logger.py # 操作日志文件 数据库 │ ├── emotion_analyzer.py # 人脸检测 情感分类核心算法 │ └── theme.py # 界面主题默认值 ├── ui/ │ ├── main_window.py # 主窗口与顶部图标导航 │ ├── styles.py # 全局深色样式表 │ ├── dialogs.py # 深色消息框 / 文件 / 颜色对话框 │ ├── pages/ # 主页、日志、图表、参数、管理、配置、样式 │ └── widgets/ # Emotion3DWidget、EChartsWidget ├── resources/html/ │ ├── emotion_3d.html # Three.js 三维情绪人脸场景 │ └── echarts_board.html # ECharts 图表看板 └── data/ ├── logs/YYYY-MM-DD/ # 按日日志与参数快照 ├── images/YYYY-MM-DD/ │ ├── before/ # 识别前原图 │ └── after/ # 识别后标注图 ├── db/emotion.db # SQLite 数据库 └── models/ # 训练好的分类器与 scaler六、所用 Python 算法与模型6.1 人脸检测算法OpenCV Haar Cascadehaarcascade_frontalface_default.xml增强CLAHE 对比度受限自适应直方图均衡可开关备用级联alt2主检测失败时启用DNN NMS 去重按人脸面积排序优先处理主脸可调参数face_scale_factor、face_min_neighbors、face_min_size、face_pad_ratio6.2 特征提取对每个人脸 ROI 提取约48 维特征向量主要包括区域亮度统计上/下/左/右半脸嘴部、眼部均值与方差Canny 边缘占比、Laplacian 清晰度灰度直方图、HSV 色相/饱和度直方图6.3 情感分类模型当前版本ExtraTreesClassifier极端随机树集成v3预处理StandardScaler 标准化训练方式首次运行或模型版本变更时用可分的合成特征离线训练并保存到data/models/推理流程predict_proba得到各类概率温度缩放Temperature Scaling锐化主类按参数页情绪权重加权并归一化多人脸时按「主脸权重 × 主脸 (1−权重) × 均值」融合取 argmax 为最终情绪6.4 评价指标展示界面展示的准确率、召回率、精确率、F1 结合模型在验证集上的宏平均指标本次识别置信度加权用于可视化大屏展示便于观察识别质量变化。6.5 其它算法组件模块算法/方法图表线性回归echarts-stat 统计插件概率融合加权平均 归一化图片归档按自然日划分目录主题系统JSON 配置驱动 QSS / Web 主题七、数据存储说明7.1 文件系统按日期data/images/2026-08-30/before/ # 识别前 data/images/2026-08-30/after/ # 识别后 data/logs/2026-08-30/ # 日志与参数 JSON 快照7.2 SQLite 主要表analysis_records每次分析结果情绪、概率、指标、图片路径等operation_logs操作日志app_params参数键值stored_files归档文件索引含 before/after 类型数据库默认路径data/db/emotion.db可在配置页修改。八、界面与交互说明导航顶部图标按钮切换页面无侧边栏。深色主题全局深色样式消息框、文件选择、颜色选择亦为深色弹窗。滚动各页面支持滚动条缩小窗口仍可浏览全部内容。窗口启动时适配屏幕可最大化/还原右下角可拖拽缩放。九、常见问题Q3D 或图表空白A需能访问 jsDelivr 等 CDN。内网请将resources/html/中 Three.js、ECharts 脚本改为本地文件。Q中文标注显示异常A程序会尝试加载微软雅黑 / 黑体等系统字体。请确认系统存在常见中文字体。Q检测不到人脸A到「参数」页降低minNeighbors、减小最小尺寸或开启 CLAHE / 备用级联图片尽量正面、光线充足。Q想偏向某类情绪A在「参数」页提高对应情绪权重并保存回到主页点「刷新」。Q如何备份数据A备份整个data/与config/settings.json即可。十、开发与扩展建议可将合成特征训练替换为真实 FER 数据集微调进一步提升真实场景准确率。可接入摄像头实时帧分析。可将 Three.js 人脸替换为 GLTF 高精度人脸资产。图表类型可在resources/html/echarts_board.html中继续扩展。十一、许可证与声明本项目用于学习、演示与可视化大屏展示。离线分类器基于合成特征训练实际业务部署建议使用标注真实人脸数据重新训练或更换预训练情感模型。启动命令再次提醒pip install -r requirements.txt py -3 main.pyGitHub - zhangsansh/Python-PyQt5-OpenCV-scikit-learn-Three.js-ECharts: 机器学习人脸情感分析可视化大屏。基于Python的人脸情感识别与可视化分析系统。采用PyQt5桌面界面、OpenCV人脸检测、scikit-learn机器学习分类并结合Three.js三维人脸情绪模型与ECharts多类型图表实现从图片上传、情感识别、结果展示到日志归档的完整闭环。 · GitHub机器学习人脸情感分析可视化大屏。基于Python的人脸情感识别与可视化分析系统。采用PyQt5桌面界面、OpenCV人脸检测、scikit-learn机器学习分类并结合Three.js三维人脸情绪模型与ECharts多类型图表实现从图片上传、情感识别、结果展示到日志归档的完整闭环。 - zhangsansh/Python-PyQt5-OpenCV-scikit-learn-Three.js-EChartshttps://github.com/zhangsansh/Python-PyQt5-OpenCV-scikit-learn-Three.js-ECharts.git

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价