tjy/demo/readme.md

88 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 健康监测系统
## 项目概述
这是一个基于计算机视觉和人工智能的健康监测系统。该系统利用摄像头实时捕获用户图像并通过多个AI模型分析各种健康指标包括年龄、性别、血压、情绪状态、心率、呼吸率、皮肤疾病和皮肤类型。
## 系统架构
```
project/
├── main.py # 主程序入口
├── ui/
│ ├── main_window.py # 主窗口UI逻辑代码
│ └── ui.py # 主窗口UI布局代码
├── images/ # UI相关图片
├── labels/ # 模型识别分类标签
├── weights/ # 模型权重
├── core/
│ ├── camera_thread.py # 摄像头读取线程
│ ├── storage_thread.py # 帧序列存储线程
│ ├── update_thread.py # 结果更新线程
│ └── api_process.py # AI处理进程
└── apis/
├── age/ # 年龄性别预测模型
├── bp/ # 血压预测模型
├── emotion/ # 情绪检测模型
├── hr/ # 心率检测模型
├── rr/ # 呼吸检测模型
├── sd/ # 皮肤疾病检测模型
└── st/ # 皮肤类型检测模型
```
## 系统流程
```mermaid
graph TD
A[主线程: GUI] --> B[线程1: 摄像头读取]
A --> C[线程2: 帧序列存储]
A --> D[进程1: AI处理]
A --> E[线程3: 结果更新]
B -->|帧数据| A
B -->|帧数据| C
C -->|帧序列| D
D -->|处理结果| E
E -->|更新UI| A
```
## 主要组件
1. **主线程GUI线程**
- 运行PyQt5的事件循环和处理用户交互
- 显示摄像头画面和AI处理结果
- 协调其他线程和进程的工作
2. **摄像头读取线程**
- 专门负责从摄像头读取画面
- 使用QTimer定时触发画面捕获
- 通过信号机制将捕获的帧传递给主线程显示和存储线程
3. **帧序列存储线程**
- 接收来自摄像头读取线程的帧
- 将帧序列存储到磁盘或内存缓冲区
- 实现循环缓冲只保留最近的N帧
4. **AI处理进程**
- 使用多进程以充分利用多核CPU
- 定期从存储的帧序列中获取数据
- 运行多个AI算法来计算各项生理指标
- 将处理结果通过进程间通信如Queue发送回主进程
5. **结果更新线程**
- 接收来自AI处理进程的结果
- 通过信号机制将结果传递给主线程进行UI更新
## 功能模块
- 年龄和性别预测
- 血压预测
- 情绪检测
- 心率检测
- 呼吸率检测
- 皮肤疾病检测
- 皮肤类型检测