news 2026/4/6 19:04:01

YOLO + Flask + Vue 前后端分离 Web 检测系统 yolo Flask web端图片视频检测系统 使用Flask作为后端和vue作为前端,前后端分离 可以替换自己的模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO + Flask + Vue 前后端分离 Web 检测系统 yolo Flask web端图片视频检测系统 使用Flask作为后端和vue作为前端,前后端分离 可以替换自己的模型

yolo Flask web端图片视频检测系统

可以替换自己的模型
使用Flask作为后端和vue作为前端,前后端分离。

有注册,登录,用户管理,图片检测,视频检测,历史检测图片管理,历史检测视频管理功能

支持mysql数据库或sqlite数据库,可随时切换。

默认使用yolov8默认模型 可以替换为你自己的模型 实现不同的检测功能。

支持yolov5到12等版本的模型【目标检测模型】

YOLO + Flask + Vue 前后端分离 Web 检测系统,支持多版本 YOLO 模型、用户系统、MySQL/SQLite 切换。


📊 系统功能与技术栈总览表

模块功能说明技术实现
前端用户界面Vue3 + Element Plus + Axios
后端API 服务Flask + Flask-SQLAlchemy + Flask-JWT
数据库用户 & 检测记录存储默认 SQLite,可一键切换为MySQL(修改配置即可)
模型支持目标检测支持yolov5/yolov8/yolov9/yolov10/yolo11/yolov12(通过ultralytics或自定义加载)
默认模型开箱即用yolov8n.pt(COCO 80 类)
模型替换自定义检测任务替换model/best.pt并修改类别名称即可
用户系统安全访问注册、登录、JWT 鉴权、用户管理
检测功能多模态输入图片上传检测、视频上传检测(逐帧分析)
历史记录结果追溯自动保存检测图片/视频缩略图 + 元数据到数据库
部署轻量灵活单机运行 or Docker 容器化

🔧 数据库配置切换示例(config.py

# config.pyimportosclassConfig:SECRET_KEY='your-secret-key'# 默认使用 SQLiteSQLALCHEMY_DATABASE_URI='sqlite:///app.db'# 若需 MySQL,取消注释以下行(并安装 pymysql)# SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@localhost/yolo_db'SQLALCHEMY_TRACK_MODIFICATIONS=False

✅ 切换数据库只需修改一行,无需改业务代码。


🧠 后端核心代码(Flask 极简版)

1.app.py—— 主程序
# app.pyfromflaskimportFlask,request,jsonify,send_filefromflask_sqlalchemyimportSQLAlchemyfromflask_jwt_extendedimportJWTManager,create_access_token,jwt_requiredimportcv2importosfromultralyticsimportYOLO# 支持 yolov8/v9/v10/v11/v12# 若用 yolov5,改用 from models.common import DetectMultiBackendapp=Flask(__name__)app.config.from_object('config.Config')db=SQLAlchemy(app)jwt=JWTManager(app)# === 模型加载(支持替换)===MODEL_PATH="model/best.pt"# 替换为你自己的 .pt 文件model=YOLO(MODEL_PATH)# === 用户模型 ===classUser(db.Model):id=db.Column(db.Integer,primary_key=True)username=db.Column(db.String(80),unique=True,nullable=False)password=db.Column(db.String(120),nullable=False)# === 注册 ===@app.route('/register',methods=['POST'])defregister():data=request.json user=User(username=data['username'],password=data['password'])db.session.add(user)db.session.commit()returnjsonify({"msg":"注册成功"})# === 登录 ===@app.route('/login',methods=['POST'])deflogin():data=request.json user=User.query.filter_by(username=data['username']).first()ifuseranduser.password==data['password']:token=create_access_token(identity=user.id)returnjsonify(access_token=token)returnjsonify({"msg":"用户名或密码错误"}),401# === 图片检测(需登录)===@app.route('/detect/image',methods=['POST'])@jwt_required()defdetect_image():file=request.files['image']img_path="uploads/"+file.filenamefile.save(img_path)results=model(img_path)output_path="results/"+file.filename results[0].save(filename=output_path)# 保存记录到数据库(略)returnsend_file(output_path,mimetype='image/jpeg')# === 视频检测(简化版)===@app.route('/detect/video',methods=['POST'])@jwt_required()defdetect_video():file=request.files['video']input_path="uploads/"+file.filename output_path="results/"+file.filenamefile.save(input_path)cap=cv2.VideoCapture(input_path)fourcc=cv2.VideoWriter_fourcc(*'mp4v')out=cv2.VideoWriter(output_path,fourcc,30.0,(640,640))whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=model(frame)annotated_frame=results[0].plot()out.write(annotated_frame)cap.release()out.release()returnsend_file(output_path,as_attachment=True)if__name__=='__main__':withapp.app_context():db.create_all()app.run(debug=True)

🌐 前端核心代码(Vue3 极简调用)

1.DetectImage.vue
<template> <input type="file" @change="uploadImage" accept="image/*" /> <img v-if="resultUrl" :src="resultUrl" style="max-width:600px" /> </template> <script setup> import axios from 'axios' const uploadImage = async (e) => { const file = e.target.files[0] const formData = new FormData() formData.append('image', file) const res = await axios.post('/detect/image', formData, { headers: { Authorization: `Bearer ${localStorage.token}` } }) // 假设后端返回图片 URL 或 blob const blob = await res.data.blob() resultUrl.value = URL.createObjectURL(blob) } </script>

📁 项目目录结构建议

yolo-web-system/ ├── backend/ │ ├── app.py │ ├── config.py │ ├── model/ # ← 放你的 best.pt │ ├── uploads/ # 上传文件 │ └── results/ # 检测结果 ├── frontend/ │ ├── src/ │ │ ├── views/Login.vue │ │ ├── views/DetectImage.vue │ │ └── ... │ └── package.json └── requirements.txt

✅ 如何替换为自己的模型?

  1. 将你的训练好的.pt文件放入backend/model/best.pt
  2. (可选)修改前端类别名称显示(如从 COCO 的person改为tea_pest
  3. 重启 Flask 服务即可生效

💡 支持所有 Ultralytics 官方模型(YOLOv8~v12),YOLOv5 需额外加载逻辑。


⚙️ 依赖安装(requirements.txt

flask flask-sqlalchemy flask-jwt-extended opencv-python ultralytics>=8.3.0 numpy pymysql # 仅当使用 MySQL 时需要

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 5:58:09

高性价比拉篮品牌推荐,六款精工之选,点亮你的厨房收纳空间

厨房收纳&#xff0c;是提升家居幸福感的关键一环。面对有限的橱柜空间&#xff0c;一款设计合理、品质过人的拉篮&#xff0c;往往能起到“四两拨千斤”的作用。它不仅关乎整洁美观&#xff0c;更直接影响到日常烹饪的便捷与效率。然而&#xff0c;市场上拉篮品牌繁多&#xf…

作者头像 李华
网站建设 2026/3/30 18:02:36

支持私有化部署的企业级培训考试系统源码,提供多种练习模式

温馨提示&#xff1a;文末有资源获取方式企业内部培训常常面临数据敏感、流程繁杂、效果难追踪等痛点。针对这些挑战&#xff0c;我们为您推荐一款支持私有化部署的企业级培训考试系统源码。它不仅仅是一套软件&#xff0c;更是一个安全、自主、可深度定制的数字化培训基础设施…

作者头像 李华
网站建设 2026/4/5 8:20:33

『React』组件副作用,useEffect讲解

在 React 开发中&#xff0c;有时候会听到“副作用”这个词。特别是用到 useEffect 这个 Hook 的时候&#xff0c;官方就明确说它是用来处理副作用的。那什么是副作用&#xff1f;为什么我们要专门管控它&#xff1f;今天就聊聊 React 中的组件副作用。 &#x1f4cc; 什么是“…

作者头像 李华
网站建设 2026/3/31 4:11:30

参考文献崩了?AI论文网站 千笔ai写作 VS speedai,自考写作者的高效之选!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具正逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生、研究生完成毕业论文不可或缺的得力助手。越来越多的学生在面对繁重的论文任务时&#xff0c;开始依赖AI工具来提升写作效率、优化内容结构。然而&#xf…

作者头像 李华
网站建设 2026/4/1 20:33:03

绿色AI测试工具:碳足迹追踪在模型训练/推理的优化仪表盘

测试工程师的新战场 随着AI模型在软件测试中的广泛应用&#xff0c;其训练与推理的能源消耗已成为不可忽视的成本。一次Stable Diffusion推理消耗0.1-0.3度电&#xff0c;大规模商用累计能耗惊人。对测试团队而言&#xff0c;传统性能测试已无法满足可持续发展需求——碳足迹追…

作者头像 李华
网站建设 2026/3/14 4:24:51

AI供应链安全:依赖库漏洞对预训练模型的污染检测工具深度解析

一、风险现状&#xff1a;隐形炸弹的威胁链 现代AI开发中&#xff0c;单个预训练模型平均依赖87个第三方库&#xff08;如PyTorch、Hugging Face Transformers&#xff09;&#xff0c;形成复杂的供应链网络。这些依赖库正成为攻击者植入恶意代码的“特洛伊木马”&#xff1a;…

作者头像 李华