# diet-assistant **Repository Path**: zeron2022/diet-assistant ## Basic Information - **Project Name**: diet-assistant - **Description**: 大学生饮食拍照识别与营养推荐系统 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-26 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🍱 大学生饮食拍照识别与营养推荐系统 > 基于深度学习的膳食图像识别与个性化营养推荐系统 —— 拍一张饭菜照片,自动识别菜品、计算热量,给出个性化饮食建议。 --- ## 📋 项目简介 大学生在食堂或外卖场景中,用手机拍摄饭菜照片,系统通过**百度 AI 图像识别 API**自动识别菜品,匹配**中国食物成分数据库**获取热量、蛋白质、脂肪、碳水等营养数据,结合用户的**身高、体重、年龄、运动目标**计算每日热量需求,生成个性化饮食推荐。 **技术栈:** | 层级 | 技术 | |------|------| | 后端框架 | Flask 3.x(Python) | | 数据库 | MySQL + mysql-connector | | 图像识别 | 百度 AI 菜品识别 API | | 前端框架 | UniApp(Vue 3)+ Vite | | 数据管道 | Python 爬虫 + ETL 清洗 + 营养分析 | --- ## 🚀 快速开始 ### 1. 克隆项目 ```bash git clone https://github.com/L-cmyk-maker/diet-assistant.git cd diet-assistant ``` ### 2. 创建虚拟环境并安装依赖 ```bash cd backend python -m venv venv venv\Scripts\activate # Windows pip install -r requirements.txt ``` ### 3. 配置 MySQL 数据库 - 确保本地 MySQL 服务已启动 - 创建数据库:`CREATE DATABASE diet_system DEFAULT CHARSET utf8mb4;` - 修改 `backend/config.py` 中的数据库密码 - 运行建表脚本(如有) ### 4. 配置百度 AI API 1. 前往 [百度 AI 开放平台](https://ai.baidu.com/) 注册并创建应用 2. 获取 **API Key** 和 **Secret Key** 3. 填入 `backend/config.py` 中的 `BAIDU_API_KEY` 和 `BAIDU_SECRET_KEY` ### 5. 启动后端服务 ```bash cd backend python app.py ``` 服务运行在 `http://localhost:5000` ### 6. 启动前端(可选) ```bash cd frontend npm install npm run dev:h5 ``` --- ## 📁 项目结构 ``` diet-system/ ├── backend/ # Flask 后端 │ ├── app.py # 主入口,注册蓝图 │ ├── config.py # MySQL/AI API 配置 │ ├── models.py # 数据模型(User) │ ├── requirements.txt # Python 依赖 │ ├── food_data.db # 食物营养数据库 │ └── blueprints/ # API 蓝图 │ ├── auth.py # 用户注册/登录 │ ├── recognition.py # 菜品拍照识别 │ ├── nutrition.py # 营养查询分析 │ └── recommend.py # 饮食推荐 │ ├── frontend/ # UniApp 前端 │ └── src/ │ ├── pages/ # 页面组件 │ │ ├── index/ # 首页(拍照入口) │ │ ├── login/ # 登录页 │ │ ├── register/ # 注册页 │ │ ├── profile/ # 个人资料(身高/体重/目标) │ │ ├── history/ # 饮食历史记录 │ │ ├── record/ # 拍照识别结果 │ │ └── recommend/ # 饮食推荐 │ └── utils/ │ ├── api.js # API 请求封装 │ └── auth.js # 登录状态管理 │ ├── data/ # 数据管道 │ ├── crawler.py # 食物数据爬虫 │ ├── clean.py # 数据清洗 │ ├── etl.py # ETL 转换 │ ├── seed_foods.py # 食物数据导入 │ ├── analysis.py # 营养分析报告 │ ├── raw_data/ # 原始爬取数据 │ └── reports/ # 分析报告 │ └── .gitignore # Git 忽略规则 ``` --- ## 🔌 API 接口一览 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/register` | 用户注册 | | POST | `/api/login` | 用户登录 | | POST | `/api/logout` | 退出登录 | | POST | `/api/recognize` | 上传食物图片,返回识别结果和营养数据 | | GET | `/api/nutrition/` | 查询指定食物的营养信息 | | GET | `/api/recommend` | 获取个性化饮食推荐 | | POST | `/api/update_profile` | 更新用户身体数据 | --- ## 🧠 核心功能 ### 1. 菜品图像识别 拍照 → 上传到 Flask 后端 → 调用百度 AI 菜品识别 API → 返回菜名和置信度 ### 2. 营养数据匹配 识别到的菜名 → 查询食物数据库 → 获取热量、蛋白质、脂肪、碳水等 ### 3. 个性化热量计算 - **BMI** = 体重 / 身高² - **BMR** = Mifflin-St Jeor 公式(基础代谢率) - **TDEE** = BMR × 活动系数 - 目标热量 = TDEE ×(增肌 +10% / 减脂 -20% / 维持 ±0%) ### 4. 饮食推荐引擎 根据用户今日已摄入热量和目标热量差额,推荐合适的下一餐搭配 --- ## 👥 团队成员 - 卢恺威(2023023078)—— 后端 & 数据管道 - 待补充…… --- ## 📄 开源协议 本项目仅用于学术研究和毕业设计,未经许可请勿商用。