基于yolo11+flask打造一个精美登录界面和检测系统

这个是使用flask实现好看登录界面和友好的检测界面实现yolov11推理和展示,代码仅仅有2个html文件和一个python文件,真正做到了用最简洁的代码实现复杂功能。

测试通过环境:

windows x64

anaconda3+python3.8

ultralytics==8.3.81

flask==1.1.2

torch==2.3.0

运行步骤: 安装好环境执行python main.py

后端实现代码:

from flask import Flask, render_template, request, redirect, url_for, session, flash, Response, jsonify
import os
from functools import wraps
from ultralytics import YOLO
import cv2
import numpy as np
import base64
import jsonapp = Flask(__name__)
app.secret_key = 'your_secret_key'  # 设置密钥用于session# 初始化YOLO11模型
model = YOLO('yolo11n.pt')  # 或使用其他版本如 yolo11s.pt, yolo11m.pt
#热启动
model(np.zeros((300, 300, 3), np.uint8))# 登录验证装饰器
def login_required(f):@wraps(f)def decorated_function(*args, **kwargs):if 'logged_in' not in session:return redirect(url_for('login'))return f(*args, **kwargs)return decorated_function# 登录路由
@app.route('/', methods=['GET', 'POST'])
@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':username = request.form['username']password = request.form['password']if username == 'admin' and password == 'admin':session['logged_in'] = Truereturn redirect(url_for('detection'))else:flash('Invalid username or password!')return render_template('login.html')# 目标检测路由
@app.route('/detection')
@login_required
def detection():return render_template('detection.html')@app.route('/detect', methods=['POST'])
@login_required
def detect():try:data = request.jsonimage_data = data['image'].split(',')[1]confidence = float(data['confidence'])iou = float(data['iou'])# 解码base64图像image_bytes = base64.b64decode(image_data)nparr = np.frombuffer(image_bytes, np.uint8)image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)# 运行检测results = model(image, conf=confidence, iou=iou)[0]# 在图像上绘制检测结果for box in results.boxes:x1, y1, x2, y2 = map(int, box.xyxy[0])conf = float(box.conf[0])cls = int(box.cls[0])label = f'{results.names[cls]} {conf:.2f}'cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)cv2.putText(image, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)# 将结果图像转换为base64_, buffer = cv2.imencode('.jpg', image)image_base64 = base64.b64encode(buffer).decode('utf-8')return jsonify({'success': True,'image': f'data:image/jpeg;base64,{image_base64}'})except Exception as e:return jsonify({'success': False,'error': str(e)})@app.route('/detect_video_frame', methods=['POST'])
@login_required
def detect_video_frame():# 类似于detect路由,但专门处理视频帧# ... implementation similar to detect route ...passif __name__ == '__main__':app.run(debug=True)

登录界面:

目标检测界面:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLMesh系列教程:利用date_spine宏构建日期序列实践指南

引言:为什么需要日期维度表? 在数据分析和报表开发中,日期维度表是不可或缺的基础结构,其中包括一定日期范围的日期序列,每个序列包括对应日期属性,如年季月日、是否周末等。无论是计算日粒度销售额、分析…

【蓝桥杯】省赛:神奇闹钟

思路 python做这题很简单,灵活用datetime库即可 code import os import sys# 请在此输入您的代码 import datetimestart datetime.datetime(1970,1,1,0,0,0) for _ in range(int(input())):ls input().split()end datetime.datetime.strptime(ls[0]ls[1],&quo…

2024浙江大学计算机考研上机真题

2024浙江大学计算机考研上机真题 2024浙江大学计算机考研复试上机真题 2024浙江大学计算机考研机试真题 2024浙江大学计算机考研复试机试真题 历年浙江大学计算机复试上机真题 历年浙江大学计算机复试机试真题 2024浙江大学计算机复试上机真题 2024浙江大学计算机复试机试真题 …

Typora 使用教程(标题,段落,字体,列表,区块,代码,脚注,插入图片,表格,目录)

标题 一个#是一级标题, 2个#是二级标题, 以此类推, 最多可达六级标题 示例 输入#号和标题后回车即可 注意: #和标题内容之间需要存在空格(一个或多个均可), 没有空格就会变成普通文字 标题快捷键 Ctrl数字 1-6 可以快速调成对应级别的标题 (选中文本/把光标放在标题上再按…

`FisherTrainer` 的自定义 `Trainer` 类:累积梯度的平方并求平均来近似计算 Fisher 信息矩阵

FisherTrainer 的自定义 Trainer 类:累积梯度的平方并求平均来近似计算 Fisher 信息矩阵 用于计算模型参数的 Fisher 信息矩阵的近似值 整体目标 Fisher 信息矩阵用于衡量模型参数的不确定性,其在优化问题中可以帮助我们更准确地更新模型参数,避免陷入局部最优。在代码中,…

网页制作代码html制作一个网页模板

制作一个简单而实用的网页模板:HTML基础入门 在数字时代,网页已成为信息展示和交流的重要平台。HTML(HyperText Markup Language)作为网页制作的基础语言,为开发者提供了构建网页的基本框架。本文将带你了解如何使用H…

二阶近似 是什么意思

二阶近似 是什么意思 一、二阶近似的概念与举例 二阶近似是数学分析中通过泰勒展开对函数进行近似的方法,保留到二阶项(即包含一阶导数和二阶导数)。在优化问题(如模型训练)中,常用于近似损失函数,帮助更精准地更新模型参数。 举例: 假设损失函数为 L ( θ ) \mathc…

ImGui 学习笔记(四)—— 实现每窗口背景色

ImGui 的窗口背景仅通过全局的 style 控制,这一点不方便于我们设置特定窗口的背景透明度(一般不用于调整颜色),分析代码,我们可以找到 ImGui::RenderWindowDecorations 函数: void ImGui::RenderWindowDec…

Python虚拟环境完全指南:用venv管理项目依赖,避免环境冲突的N个技巧

引言:当你的第3个Python项目开始报错时… “明明在Demo项目能跑的代码,移植到新项目就报错?” 你可能正经历着Python开发者的成年礼——依赖冲突。本文手把手教你用Python内置的venv模块打造隔离的虚拟环境,从此告别pip install引…

【后端开发面试题】每日 3 题(十三)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html 📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家,每天的题目都是独…

C#入门学习记录(三)C#中的隐式和显示转换

C#类型转换:隐式与显式转换的机制与应用 在C#的强类型体系中,数据类型转换是实现数据交互和算法逻辑的基础操作。当数值类型范围存在包含关系,或对象类型存在继承层次时,系统通过预定义的转换规则实现类型兼容处理。隐式转换&…

Linux FILE文件操作2- fopen、fclose、fgetc、fputc、fgets、fputs验证

目录 1.fopen 打开文件 1.1 只读打开文件,并且文件不存在 1.2 只写打开文件,并且文件不存在 1.3 只写打开文件,并且文件存在,且有内容 1.4 追加只写打开文件,并且文件不存在 2. fclose 关闭文件 3. fgetc 读取一…

如何检查CMS建站系统的插件是否安全?

检查好CMS建站系统的插件安全是确保网站安全的重要环节,对于常见的安全检查,大家可以利用以下几种有效的方法和工具,来帮你评估插件的安全性。 1. 检查插件来源和开发者信誉 选择可信来源:仅从官方插件库或可信的第三方开发者处…

使用Dependency Walker和Beyond Compare快速排查dll动态库损坏或被篡改的问题

目录 1、问题描述 2、用Dependency Walker工具打开qr.dll库,查看库与库的依赖关系以及接口调用情况,定位问题 3、使用Beyond Compare工具比较一下正常的msvcr100d.dll和问题msvcr100d.dll的差异 4、最后 C软件异常排查从入门到精通系列教程&#xff…

2025.3.17总结

今天又是不开心得一天,回归一个问题单,晚上看了下科目四,不到九点就领夜宵回去了。 每次干得不开心,总会有跑路得念头,真的卷不动了,考个试考到抑郁,考到怀疑人生。还没等他人辞退,…

【CF】Day9——Codeforces Round 953 (Div. 2) BCD

B. New Bakery 题目: 思路: 被标签害了,用什么二分( 很简单的思维题,首先如果a > b,那么全选a就行了,还搞啥活动 否则就选 b - a 天来搞活动,为什么? 首先如果我…

【大模型】Transformer、GPT1、GPT2、GPT3、BERT 的论文解析

前言 在自然语言处理(NLP)和深度学习的快速发展中,Transformer模型和 GPT系列模型扮演了至关重要的角色。本篇博客旨在对这些开创性的论文进行介绍,涵盖它们的提出时间、网络结构等关键信息,能够快速的理解这些模型的设…

Spring Security 教程:从入门到精通(含 OAuth2 接入)

Spring Security 教程:从入门到精通(含 OAuth2 接入) Spring Security 是 Spring 框架中备受推崇的安全模块,广泛应用于构建安全可靠的企业级应用程序。它提供了一套全面的解决方案,涵盖身份认证(Authenti…

OpenGL ES 入门指南:从基础到实战

引言:为什么需要 OpenGL ES? 在当今的嵌入式设备(如智能手机、汽车仪表盘、智能家居中控屏)中,流畅的图形渲染能力是用户体验的核心。OpenGL ES(OpenGL for Embedded Systems) 作为行业标准&am…

java的WeakHashMap可以用来做缓存使用?强软弱虚四种引用对比

在 Java 中,引用(Reference)机制用于管理对象的生命周期和垃圾回收。Java 提供了四种类型的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Refer…